テクノモンキー(サブ)

テクノモンキーのサブブログです。 iOSやAndroid、Unityのアプリ開発に関する情報や気になったニュース、考え事などを気軽に発信します。

【Unity】アニメーションを切り替える際、最初のアニメーションが終わるまで開始できない場合の対処法

https://unity3d.com/files/images/ogimg.jpg?1

Unityアプリ開発でつまづいた部分のメモ。

UnityでGameObjectにアニメーションを追加して、スクリプトでパラメータを変更して、アニメーションを切り替えるってことをやったのですが、

 

最初のアニメーションの途中で次のアニメーションに切り替えようとしたら、

最初のアニメーションが終わってから次のアニメーションが実行されてしまい、

アニメーションが遅れて実行されてしまう問題が発生しました。

今回はその対処法です。

 

アニメーションの切り替えが即時反映されない

 

f:id:no-work-no-life-4081:20180622101350p:plain

 

現象としては以下のような感じです。

 

アニメーションA再生中 → パラメータを変更し、アニメーションBに切り替える

→ アニメーションAがすぐに切り替わらず、アニメーションAが終了してからアニメーションBが実行されてしまう。

 

 

 

アニメーションの切り替えが即時反映されない場合の対処法

 

 

この現象が発生する場合、Unityの「Animator」で切り替え前のアニメーションの「Has Exit Time」がオンになっている可能性があります。

 

「Unity マニュアル」によると、「Has Exit Time」が有効になっている場合、指定時間後に遷移するとのことなので、有効になっている場合、アニメーション完了後に次のアニメーションに移れる状態になるということかと思います。

 

Exit Time はパラメーターに依存しない特別な遷移です。パラメーターの代わりにステートの正規化された時間に依存します。このオプションを有効にすると、遷移は Exit Time で指定した特定の時間に発生します。

docs.unity3d.com

 

 

f:id:no-work-no-life-4081:20180622101835j:plain

「Has Exit Time」をオフにしてみたところ、スクリプトで変更したアニメーションが即時切り替えられるようになりました。

 

 

下記のサイトを参考にさせて頂きました。

tsubakit1.hateblo.jp