ステートマシンでアニメーション遷移 (Animation Transition) を使用すると、アニメーションステート (Animation State) 間で切り替えたり、ブレンドしたりできるようになります。遷移は、 ステート間のブレンドの継続時間と、遷移が発生するときの条件を定義します。これらの条件を設定するには、アニメーターコントローラー (Animator Controller) のパラメーターの値を指定します。
例えば、あるキャラクターに “巡回中 (patrolling)” と “休止中 (sleeping)” のステートがあるとします。“alertness” (警戒度) パラメーターの値が一定のレベルを下回ったときにのみ、巡回中と休止中との間の遷移が発生するように設定することができます。
遷移に名前を付けるには、以下のフィールドに名前を入力します。
Inspector ウィンドウに、ステートが使用する遷移が表示されます。
一度にアクティベートできる遷移は 1 つだけです。ただし、現在アクティブな遷移を別の遷移で中断するように設定することができます。詳細は、遷移の割り込みを参照してください。
遷移のプロパティを表示するには、Animator ウィンドウで 2 つのステートをつなぐ遷移の線を選択します。Inspector ウィンドウにプロパティが表示されます。
以下のプロパティを使用して、遷移や、現在のステートとその次のステート (遷移によって繋がれた 2つのステート) のブレンドの仕方を調整します。
| プロパティ | 機能 |
|---|---|
| Has Exit Time | Exit Time はパラメーターに依存しない特別な遷移です。パラメーターの代わりに、ステートの正規化された時間に依存します。このオプションを有効にすると、Exit Time で指定した特定の時間に遷移が発生します。 |
| 設定 | 遷移に関する詳細設定が含まれる折り込みメニュー。それぞれの遷移設定について以下に詳しく説明します。 |
| Exit Time |
Has Exit Time が有効になっている場合、この値は遷移が有効になる正確な時刻を表します。これは正規化された時間で表されます (例えば、終了時間が 0.75 の場合は、最初のフレームでアニメーションの 75% が再生され、Exit Time の条件が true であることを意味します)。次のフレームでは、条件は false です。 ループアニメーションでは、終了時間が 1 より小さい遷移はループのたびに評価されます。そのため、この値を使用して、各ループのアニメーションで遷移の適切なタイミングを計ることができます。 Exit Time が 1 より大きい遷移は 1 回だけ評価されます。そのため、この値を使用して、決まった回数のループの後、特定の時間に終了させることができます。例えば、終了時間が 3.5 の遷移は、3.5 回のループ後に 1 回評価されます。 |
| Fixed Duration | Fixed Duration ボックスがオンになっている場合、遷移時間は秒単位で解釈されます。Fixed Duration ボックスがオフになっている場合、遷移時間は遷移元のステートの正規化された時間の部分として解釈されます。 |
| Transition Duration | 現在のステートの継続時間に対する遷移の継続時間。Fixed Duration モードに応じて、正規化された時間または秒で表されます。遷移グラフでは、2 つの青いマーカーに挟まれた部分として表示されます。 |
| Transition Offset | 遷移先ステートの再生が開始される時点のオフセット。例えば 0.5 の値は、遷移先ステートで、そのタイムラインの 50% の時点から再生が開始されることを意味します。 |
| Interruption Source | これを使用して、遷移を中断することができる条件を指定できます。詳細は、遷移の割り込みを参照してください。 |
| Ordered Interruption | 現在の遷移が、その順序に関係なく他の遷移によって割り込まれることを可能にするかどうかを決定します (後述の遷移の割り込みを参照してください)。 |
| Conditions | 遷移には、1 つまたは複数の条件を設定することも、条件を設定しないことも可能です。遷移に条件を指定しない場合、Unity エディターは Exit Time のみを考慮し、終了時間に達すると遷移が発生します。遷移に 1 つまたは複数の条件が設定されている場合は、すべての条件が満たされたときのみ遷移がトリガーされます。 それぞれの条件は、以下の要素で構成されています。 イベントパラメーター (条件で考慮される値)。 条件述部 (必要に応じて。float の場合は 、`less than` や `greater than` など)。 パラメーター値 (必要な場合)。 遷移に Has Exit Time が選択されており、かつ 1 つ以上の条件が設定されている場合、Unity エディターは Exit Time が経過してから条件が true であるかどうかを考慮します。これにより、遷移をアニメーションの特定の部分内で発生させることが可能になります。 |
Interruption Source と Ordered Interruption のプロパティを使用して、遷移の割り込みの仕方を制御します。
遷移の順序は、概念的に説明すると、遷移がキュー (順番に待機している状態) のようになっていて、最初に挿入された遷移から最後に挿入された遷移の順に、パースされます。
AnyState の遷移は、常にキューの先頭に加えられます。その後、他の遷移が Interruption Source の値に基づいてキューに加えられます。
| 値 | 機能 |
|---|---|
| なし | 他の遷移を加えることはできません。 |
| Current State | 現在のステートからの遷移を予約できます。 |
| Next State | 次のステートからの遷移を予約できます。 |
| Current State then Next State | 現在のステートからの遷移を予約し、それから、次のステートからの遷移を予約します。 |
| Next State then Current State | 次のステートからの遷移を予約し、それから、現在のステートからの遷移を予約します。 |
Ordered Interruption プロパティによって、予約されたものがどのようにパースされるかが変わります。
その値によって、予約されたもののパースは以下のリストにある異なるタイミングで終了します。
| 値 | 終了タイミング |
|---|---|
| Checked | 有効な遷移、または、現在の遷移が見つかっているとき。 |
| Unchecked | 有効な遷移が見つかっているとき。 |
AnyState の遷移だけが、それ自体によって割り込み可能です。遷移割り込みに関する詳細は、ステートマシンの遷移の割り込みを参照してください。
遷移グラフを使用して、遷移の設定を視覚的に調整します。
遷移グラフの白い線は、各ステートの IK フットコンタクトを表します。グラフの上部は左足、下部は右足を表します。グラフの上部に白い線がある場合、左足は床面と接触します。グラフの下部に白い線がある場合、右足は床面に接触します。
ステート間の遷移が滑らかになるまで遷移の設定を調整します。滑らかな遷移の白い線は、足のスリップを避け、アニメーションでジャンプし、モーションのダイナミクスを維持します。
以下の操作で遷移の設定を調整します。
遷移に所属する現在のステート、またはその次のステートが Blend Tree ステートである場合、Inspector ウィンドウに Blend Tree パラメーターが表示されます。これを使用してブレンドツリーの値をいろいろな設定にし、遷移がどのようになるかをプレビューできます。ブレンドツリーに長さの異なるクリップが含まれている場合は、短いクリップと長いクリップの両方を表示したときの遷移の見え方をテストする必要があります。これらの値を調整しても、ランタイムの遷移の動作には影響しません。これは、さまざまな状況において遷移がどのように見えるかをプレビューするために使用するものです。
遷移には、1 つまたは複数の条件を設定することも、条件を設定しないことも可能です。遷移に条件を指定しない場合、Unity エディターは Exit Time のみを考慮し、終了時間に達すると遷移が発生します。遷移に 1 つまたは複数の条件が設定されている場合は、すべての条件が満たされたときのみ遷移がトリガーされます。
それぞれの条件は、以下の要素で構成されています。
遷移の Has Exit Time が有効で、かつ 1 つ以上の条件がある場合、これらの条件はステートの終了時間が経過するまでチェックされません。これによって、遷移をアニメーションの特定の部分内でのみ発生させることが可能になります。
Transition