質問: Unityアニメーションについての質問です。 一つのAnimationControllerを複数のオブジェクトで共有したいと考えています。 指定した一つのオブジェクトだけ再生を行いたいのですが、全てのオブジェクトで同時にアニメーションが再生されてしまいました。 以下のスクリプトを動かしたいオブジェクト全てに適用しています。 ``` using UnityEngine; public class animation : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { GetComponent().Play("ステート名"); } } ``` AnimatorControllerを共有した状態で、アニメーションをオブジェクト別に制御することはできるのでしょうか。 環境はUnity5.6、c#です。オブジェクトにはfbx、モーションにはvmdを使用し、mmd4mechanimを使いfbxに変換してAnimationControllerに取り込んでいます。 ご存知の方よろしければ回答お願いします。
回答: 質問文に具体性がなく分かりづらかったかもしれません。 少々強引ですが、以下の方法で実装することができました。 ``` void Updata() { GameObject gameObject = GameObject.Find("アニメーションさせたいオブジェクト名"); gameObject.GetComponent().runtimeAnimatorController = (RuntimeAnimatorController)Instantiate(Resources.Load("AnimatorController")); gameObject.GetComponent().Play("ステート名"); AnimatorStateInfo animInfo = animator.GetCurrentAnimatorStateInfo(0); if (!(animInfo.normalizedTime < 1.0f)) { actor.GetComponent().runtimeAnimatorController = RuntimeAnimatorController)Instantiate(Resources.Load("Wait")); } } ``` 初期状態を待機用のAnimationControllerに設定しておき、アニメーションさせたいときだけ切り替え、アニメーションの終了を検知したなら待機用のAnimationControllerに戻すことにしました。 当初の目的と若干ずれてしまった気もしますが、一応AnimationControllerを共有した状態で個別にアニメーションさせることができたので自己解決とさせていただきます。 fiveHundredさん、アドバイスありがとうございました。まずは関数化から始めてみようと思います。