Unity Animator TransitionのHasExitTimeとは?
HasExitTimeとは?
HasExitTime
は、アニメーションの遷移(Transition)が、現在のアニメーションの再生時間に応じて自動的に発生するかどうか を決めるオプションです。
HasExitTime = true の場合
特徴
- 現在のアニメーションが終わるまで待ってから遷移する
-
Exit Time
の値に達したら、次のアニメーションに移行する - トリガーや条件なしで、アニメーションが終わったら自動で遷移する
使いどころ
- 攻撃モーションが終わったら自動で待機モーションに戻る
- アニメーションが必ず最後まで再生される必要がある場合(例: フィニッシュアクション)
例
アニメーション Attack
から Idle
に遷移するとき、HasExitTime = true
なら Attack
が最後まで再生されてから Idle
に移行する。
HasExitTime = false の場合
特徴
- アニメーションが最後まで再生されなくても、条件が満たされればすぐに遷移できる
-
Bool
,Trigger
,Float
などのパラメータを使って制御できる -
Exit Time
の値は無視される
使いどころ
- プレイヤーの操作に応じて自由にアニメーションを切り替えたい場合
- 攻撃キャンセルやダメージを受けたときにすぐに次のアニメーションに切り替えたい場合
例
走る (Run
) → 攻撃 (Attack
) の遷移を HasExitTime = false
にして、ボタンを押した瞬間に即座に攻撃できるようにする。
HasExitTime の使い分けまとめ
HasExitTime |
動作 | 使いどころ |
---|---|---|
✅ true
|
アニメーションが終わってから遷移 | 自動遷移が必要な場合(攻撃後にIdleなど) |
❌ false
|
条件を満たしたら即遷移 | プレイヤーの操作やキャンセルが必要な場合 |
補足:Exit Time の値について
-
Exit Time = 1.0
→ アニメーションが100%再生された後に遷移 -
Exit Time = 0.5
→ 50%再生されたら遷移
Exit Time
は HasExitTime = true
のときにのみ有効 なので、HasExitTime = false
の場合は無視されます。
まとめ
HasExitTime
を適切に設定することで、スムーズなアニメーションの切り替えを実現できます。プレイヤーの操作が重要なアクションゲームでは false
、シネマティックな演出を重視する場合は true
を活用しましょう!