アニメーションを切り替える
コントローラーを切り替えることで、アニメーションを変える方法をメモ。
たぶん王道なやり方ではないと思う。
本来なら、一つのコントローラーでアニメーションをTriggerで切り替えるのが正解と思われるけど、やってみたら手順がウザ〜だったので、
コントローラーは無駄に増えるけど、スクリプトで切り替える方法にした。
やりたいこと
モンスターの向きに合わせてスプライトアニメーションを変更したい
関連記事
用意するもの
関連記事を参考に、各方向のアニメーションとコントローラーを用意する。
ちなみに、B=正面 R=右向き L=左向き T=背面 です。
↓こんな感じで、それぞれ動作を設定しておく。
Animatorを設定する
対象のオブジェクトのAnimatorに適当なコントローラーとスプライトを設定しておく。
コントローラー配列を作る
Animator.RuntimeAnimatorControllerにコントローラーを設定することで切り替える。
そのために、コントローラーを保管する入れるを作る。
[SerializeField]RuntimeAnimatorController[] controller;
コントローラーを切り替える
Animator.RuntimeAnimatorControllerを使うので、まずはAnimatorを取得しておく。
そして、条件に応じて適宜、切り替えを行う。
string course; Animator animator; void Start () { course = "R"; animator = this.GetComponent<Animator> (); } void Update () { if (course == "T") { animator.runtimeAnimatorController = controller [2]; } else if (course == "R") { animator.runtimeAnimatorController = controller [1]; } else if (course == "B") { animator.runtimeAnimatorController = controller [0]; } else if (course == "L") { animator.runtimeAnimatorController = controller [3]; } }
これで、courseの値が変わるとアニメーションが切り替わるようになる。
courseの値は、当たり判定で切り替えを行うが、ここでは割愛。
まとめ
コントローラーを切り替えするには、Animator.RuntimeAnimatorControllerを使う。