【unity】アニメーションがSetTriggerで遷移しない原因と解決方法

【unity】アニメーションがSetTriggerで遷移しない原因と解決方法

 アニメーションの遷移はSetTriggerなどで設定します。今回はアニメーションが次のアニメーションに遷移してくれない原因と解決方法について書いていきます。インスペクターの『終了時間あり(HasExitTime)』の項目に要注意です。

アニメーションの例

 このようなデフォルトで待機し、回復・ダメージ・気絶の3つのアニメーションが終わったらデフォルトに戻るアニメーションにしようと思います。しかし、ダメージアニメーションの後に回復しなかったり、ダメージアニメーションが途中で止まったままになってしまいました。これらの原因を次の項目で解説していきます。

原因

終了時間(HasExitTime)がfalseになっていた

 ダメージアニメーションがデフォルトに戻る矢印を選択し、インスペクターを開きます。

 Uniyのマニュアルでは、終了時間ありをfalseにしている時、Condition(遷移条件)が無いと遷移しないと書かれています。

 これが原因でした。終了時間をありをtrueにして、終了時間や遷移間隔を0にします。

 こうすることでダメージアニメーションが終わり次第、すぐにデフォルトに戻るようになりましたね。

 次にデフォルトからダメージアニメーションに遷移する矢印を選択し、インスペクターを開きます。

 ダメージアニメーションは0.02秒で終わるので終了時間を0.05にしておきます。

デフォルトアニメーションを調整

 今回のアニメーションでは、デフォルトアニメーションでは何もしない状態にしたいです。

 そこで一瞬で終わる何もしないアニメーションをデフォルトに設定してみます。

 これで上手くアニメーションが遷移するようになりました。

 もっと良い方法があるかもしれないので何か気が付いた方は気軽にコメントしてください。