【Unity】Has Exit Timeとは? アニメーションが切り替わるタイミングを理解しよう
UnityのAnimatorで、ボタンを押してもキャラクターがすぐに動かなかったり、攻撃の途中で待機に戻ってしまったりしたことはありませんか? そんなときに確認したい設定の一つが Has Exit Time です。この記事では、アニメーションが切り替わるタイミングを初心者向けに説明します。
この記事はUnity Animator 学習シリーズの補足記事です。Idle/Walkの切り替えを学んだ後に読むと、遷移のタイミングを理解しやすくなります。

Animatorの「遷移」とは?
Animatorでは、待機・移動・攻撃などの動きをそれぞれステートとして管理します。例えば待機のIdleから移動のWalkへ切り替えるときは、2つのステートを矢印でつなぎます。この切り替えを遷移(Transition)と呼びます。
Animatorウィンドウで矢印を選ぶと、Inspectorに遷移の設定が表示されます。画面例はUnity公式マニュアル「アニメーション遷移」で確認できます。
Animator Controllerの画面で確認しよう
Animator Controllerを開くと、Animatorウィンドウにステートと遷移の矢印が表示されます。設定したい遷移の矢印をクリックすると、Inspectorにその遷移の設定が表示されます。ステートの四角ではなく、矢印を選ぶのがポイントです。

InspectorのHas Exit Timeがチェックボックスです。オンにしたらSettingsを開き、Exit TimeやTransition Durationを確認します。下にあるConditionsは、遷移の条件を追加する場所です。画面の警告は、この公式画像の遷移元ステートにアニメーションが設定されていないことを示しており、Has Exit Time自体のエラーではありません。
攻撃から待機に戻す場合はAttack → Idleの矢印を選び、Has Exit Timeをオン、Exit Timeを1、Conditionsを空にします。移動入力ですぐ歩き出す場合はIdle → Walkの矢印を選び、Has Exit Timeをオフ、ConditionsにSpeed Greater 0.1を設定します。矢印ごとに設定するため、逆向きの遷移には別の設定が必要です。

この画像のように、Animatorウィンドウ左側のParametersタブにある+ボタンからFloatを選び、名前をSpeedにします。画面の見た目はUnityのバージョンによって異なります。

Has Exit Timeは切り替えのタイミングを決める
Has Exit Timeをオンにすると、現在のアニメーションが指定したタイミングに達するまで遷移を待ちます。 イラストの門にたとえると、門を通るタイミングを決める設定です。移動の条件を満たしていても、指定のタイミングを待つことがあります。
Exit Timeの数字は「秒」ではない
Exit Timeは秒数ではなく、アニメーションの長さを基準とした値です。0.5は半分、0.75は75%、1は1回分の終わりを表します。
例えば、長さ2秒のアニメーションを通常の速度で再生する場合、Exit Timeが0.75なら、約1.5秒のところが遷移のタイミングです。0.75秒という意味ではありません。
オンにする例:攻撃が終わってから待機に戻る

攻撃から待機への遷移で、Has Exit Timeをオン、Exit Timeを1、Conditionsをなしにします。Transition Durationは0または短めに設定します。攻撃が1回分の終わりに達すると待機への遷移が始まります。攻撃や着地など、動きをひと区切り再生したいときに便利です。
オフにする例:入力したら歩き出す

待機から移動への遷移では、Has Exit Timeをオフにし、Conditionsに「Speed Greater 0.1」を設定します。待機の進み具合を待たず、Speedが条件を満たすと遷移を始められます。プレイヤーの操作に素早く反応させたいときに使いやすい設定です。
Conditionsとの違いは?
Exit Timeは遷移を判定するタイミング、Conditionsは遷移するための条件を決めます。両方を設定すると、条件が満たされていてもタイミングを待つことがあります。
例えば、ループするアニメーションのExit Timeが0.75の場合、その位置を通過するタイミングはループごとに訪れます。入力から動き出すまで遅いと感じたら、Has Exit Timeを確認してみましょう。
Transition Durationとの違いは?
Exit Timeはいつ切り替えを始めるか、Transition Durationは切り替えにどれくらい時間をかけるかです。Durationが長いと、切り替え元と切り替え先の動きがしばらく混ざります。
Fixed Durationがオンの場合、Transition Durationは秒数です。オフの場合は、遷移元のステートの長さを基準とした割合になります。
実際に設定してみよう
- AnimatorにIdleとWalkのステートを用意します。
- Idleを右クリックして「Make Transition」を選び、Walkをクリックします。
- ParametersタブのプラスボタンからFloat型のSpeedを追加します。
- IdleからWalkへの矢印を選び、Has Exit Timeをオフにします。
- Conditionsに「Speed Greater 0.1」を追加します。
- PlayモードでSpeedを0.1より大きくし、IdleからWalkへ切り替わることを確認します。
続けてHas Exit Timeをオンにして、切り替わるタイミングの違いを観察してみましょう。Parametersの画面例はUnity公式マニュアル「Animatorウィンドウ」で確認できます。
ゲームの操作で切り替えるには、スクリプトなどからSpeedを更新する必要があります。WalkからIdleへ戻る遷移も別途設定します。
どちらを選べばいい?
- 入力したらすぐに待機から移動へ切り替えたい:オフ
- 移動をやめたらすぐに待機へ戻したい:オフ
- 攻撃を1回再生してから待機へ戻したい:オン
- 着地の動きの後で待機へ戻したい:オン
まとめ
遷移に迷ったら、Has Exit Timeでタイミングを待つか、Conditionsでどんな条件を使うか、Transition Durationで切り替えにどれくらい時間をかけるかを確認しましょう。









ディスカッション
コメント一覧
まだ、コメントがありません