アニメーションステート
アバターマスク

アニメーション遷移

概要

アニメーション遷移(Animation Transition) は、ステートマシンが、ある アニメーションステート(Animation State) から別のアニメーションステートへ切り替わったりブレンドされたりできるようにするものです。遷移(Transition) は、複数のステート間のブレンドに掛かる時間の長さを指定するだけでなく、どのような条件下でブレンドがアクティベートされるかも指定します。 遷移は、特定の条件が揃った場合にのみ起こるように設定でき、その条件は、アニメーターコントローラー(Animator Controller)で設定するパラメーターの値に基づきます。

例えば、あるキャラクターに巡回中のステート(状態)と休止中のステートがあるとします。その巡回中と休止中との間の遷移を、“alertness(警戒度)” パラメーターの値が一定のレベルを下回ったときにのみ起こるように設定することができます。

インスペクターに表示された遷移の例
インスペクターに表示された遷移の例

下のように、フィールドにテキストを入力して遷移に名前を付けることができます。

この名前が、この遷移を使用するステートのインスペクターに表示されます。

一度にアクティブにできる遷移は必ず一つだけですが、ある遷移がアクティブになっているところに別の遷移が割り込むように設定することも可能です。

遷移(Transition)のプロパティー

LABEL
LABEL

下記のプロパティーを使用して、遷移の調整や、現在のステートとその次のステート (遷移によって繋がれた 2つのステート) のブレンドの仕方の調整を行います。

プロパティー 説明
Has Exit Time Has Exit Time はパラメーターに依存しない特別な遷移です。パラメーターの代わりにステートの正規化された時間に依存します。このオプションを有効にすると、遷移は Exit Time で指定した特定の時間にのみ発生します。
Settings 遷移に関する詳細設定が含まれる折り込みメニュー。
Exit Time Has Exit Time が有効な場合、Exit Time の値は遷移が起こる正確な時間を表しています。これは正規化された時間で表され、そのため、例えば、Exit Time 0.75 は、最初のフレームで 75% アニメーションが再生された時点を意味し、Exit Time の状態は true です。次のフレームでは、状態は false です。<br/><br/>ループのアニメーションに関しては、Exit Time が 1 より小さい場合は、ループのたびに評価されます。そのため、これを使ってアニメーションの遷移の適切なタイミングをループごとに計ることができます。<br/><br/>Exit Time が 1 より大きい場合は、1 度だけ評価されます。そのため、決まった回数ループを行った後、特定の時点に終了することができます。例えば、Exit Time 3.5 の遷移は、3.5 回ループを行った後 1度だけ評価されます。
Fixed Duration Fixed Duration をチェックすると、遷移時間が秒単位で示されます。Fixed Duration をチェックしない場合は、遷移時間はソースステートの正規時間の割合として示されます。
Transition Duration (現在のステートの継続時間に対する相対的な)遷移の継続時間。正規化時間で表されます。遷移グラフでは、二つの青いマーカーに挟まれた部分として表されます。
Transition Offset 遷移先のステートの再生が開始される時点のオフセット。例えば 0.5 とすると、ターゲットステートは、そのタイムラインの50%の時点で再生され始めます。
Interrupt Source 遷移を中断することができる条件を指定できます。
  None 遷移が中断されることはありません。
   Current State 現在のステート内であれば、その他の遷移によって中断できるが、遷移先ステート内では中断できない。
  Next State ターゲットステート(次のステート)内に定義された遷移によって中断することはできるが、現在のステート内では中断できない。
   Current State then Next State 現在のステートもしくは次のステートの遷移によって中断することができる。ただし、現在のステートと次のステートの両方において同時に遷移が TRUE になった場合は、現在のステートが優先される。
   Next State then Current State 現在のステートもしくは次のステートの遷移によって中断することができる。ただし、現在のステートと次のステートの両方において同時に遷移が TRUE になった場合は、次のステートが優先される。
Ordered Interruption 現在の遷移を、その他の遷移によって、それらの遷移の順序とは関係なく中断できるかどうかを設定します。

Transition Graph (遷移グラフ)

上にリストアップされた設定項目は、フィールドに手動で数字を入力して調整することもできますが、遷移ダイアグラム(図)を使用することも可能です。図のヴィジュアル要素を操作すると上の値も変化します。

インスペクター上に表示された遷移設定とグラフ
インスペクター上に表示された遷移設定とグラフ

上のダイアグラムでは、以下の操作が可能です。 - ‘out’ マーカーをドラッグして遷移の継続時間を変えられます。 - ‘in’ マーカーをドラッグして遷移の継続時間とエグジット時間を変えられます。 - ターゲット遷移をドラッグして Transition Offset(遷移オフセット)を調整できます。 - プレビュー再生マーカーをドラッグして、インスペクター下部のプレビューウィンドウのアニメーションブレンドを移動できます。

ブレンドツリーステート間の遷移

この遷移に所属する現在のあるいはその次のステートが Blend Tree(ブレンドツリー) ステートである場合、インスペクターにブレンドツリーパラメーターが表示されます。これらの値は調整可能になっています。これは、ブレンドツリーの値をいろいろな設定にしたときに 遷移がどのように見えるかをプレビューするためのものです。ブレンドツリーに長さの異なるクリップが含まれる場合は、ブレンドツリーが短いクリップを表示している場合と長いクリップを表示している場合での、遷移の見え方をテストしてみることをお勧めします。これらの値を調整しても、ランタイムでの遷移の見え方には影響しません。これは、異なる状況下で遷移がどのような見え方をするかプレビューするためだけにある機能です。

ブレンドツリーパラメーターのプレビュー制御。現在あるいはその次のステートがブレンドツリーステートであるときに表示されます。
ブレンドツリーパラメーターのプレビュー制御。現在あるいはその次のステートがブレンドツリーステートであるときに表示されます。

Conditions (条件)

遷移は、一つまたは複数の条件を持つことができますが、まったく条件を持たないことも可能です。まったく条件を持たない場合、エグジットタイムのみが考慮されます。エグジットタイムに到達すると遷移が起こります。 遷移が一つまたは複数の条件を持っている場合、すべての条件が満たされたときにのみ遷移がトリガーされます。

それぞれの条件は、以下の要素で構成されています。

  • イベントパラメーターがひとつ。この値が条件中に考慮されます。
  • 条件述部がひとつ(必要な場合のみ)。(例: (フロート の場合) Less / Greater )
  • パラメーターの値がひとつ(必要な場合のみ)。

遷移に “Has Exit Time” が選択されておりかつ一つまたは複数の条件がある場合、条件は、ステートのエグジットタイムが過ぎるまでチェックされません。これにより、遷移がアニメーションの特定の部分内でのみ起こるようにできます。

アニメーションステート
アバターマスク