Mecanim(Animator) + Script


Mecanimでアニメーションを付けつつ、一部のパーツをスクリプトで制御したいときにちょっとはまりました。スクリプトで制御しても動かない。。
なかなか情報が見つからなかったけど、3Dモデルのアニメーション後の情報は LateUpdate() にて取得できるので、そこで無理やり動かせば動きを制御できるとの情報をゲット。DOTweenで言えば SetUpdate(UpdateType.Late) を使えばOK!でも動きが終わるともとの3Dのアニメーションに戻るのでこれで対応できることは少ないかも。。。

他には、AvatarMaskを使うといいという情報がありました。AvatarMaskを作って、Mecanimのレイヤーの設定アイコンからAvatarMaskを設定。今回は4つのボーン(Hand_L, Hand_R, Eye_L, Eye_R)をオフにしました。
macanim_with_avatar_mask
でも、これはおそらくMecanim上のレイヤー同士の場合にだけに動くっぽく、スクリプトからの制御ではうまくいきませんでした。

最終的には3Dモデルのインポートのセッティングで解決しました。どこかにボーン等のアニメーションをマスクできる設定があるのではと思って探していたら、Import Settings内のAnimationsの各アニメーション内にありました。
macanim_with_3D_import_mask
アニメーションごとに設定ができますが、逆に言うと全てのアニメーションに設定しなくてはいけません、もちろんオフにしても親のTransformについている動きには追従されます。

コメントを残す