Unityアプリ開発でつまづいた部分のメモ。
UnityでGameObjectにアニメーションを追加して、スクリプトでパラメータを変更して、アニメーションを切り替えるってことをやったのですが、
最初のアニメーションの途中で次のアニメーションに切り替えようとしたら、
最初のアニメーションが終わってから次のアニメーションが実行されてしまい、
アニメーションが遅れて実行されてしまう問題が発生しました。
今回はその対処法です。
アニメーションの切り替えが即時反映されない
現象としては以下のような感じです。
アニメーションA再生中 → パラメータを変更し、アニメーションBに切り替える
→ アニメーションAがすぐに切り替わらず、アニメーションAが終了してからアニメーションBが実行されてしまう。
アニメーションの切り替えが即時反映されない場合の対処法
この現象が発生する場合、Unityの「Animator」で切り替え前のアニメーションの「Has Exit Time」がオンになっている可能性があります。
「Unity マニュアル」によると、「Has Exit Time」が有効になっている場合、指定時間後に遷移するとのことなので、有効になっている場合、アニメーション完了後に次のアニメーションに移れる状態になるということかと思います。
Exit Time はパラメーターに依存しない特別な遷移です。パラメーターの代わりにステートの正規化された時間に依存します。このオプションを有効にすると、遷移は Exit Time で指定した特定の時間に発生します。
「Has Exit Time」をオフにしてみたところ、スクリプトで変更したアニメーションが即時切り替えられるようになりました。
下記のサイトを参考にさせて頂きました。