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 を活用しましょう!