アニメーション コントローラは、キャラクタのレイヤ化されたアニメーション システムを設定するためのメカニズムです。モーションのさまざまな状態、それらの状態をトリガできるイベント、状態間のトランジションが行われる方法を定義します。また、アニメーション コントローラは、アニメーションの速度とミキシングをコントロールする変数を提供します。
複雑なアニメーション動作を実行するために、アニメーション コントローラを使用できます。これらは Anim Controller エディタを使用して作成し、Unit Editorを使用して適用します。
アニメーション コントローラはスケルトンに関連付けられ、そのスケルトンを使用するすべてのユニットはアニメーション コントローラを使用できます。
アニメーション コントローラを作成するには、Asset Browser でキャラクタ ユニットのスケルトンを右クリックしてから、ポップアップ メニューから Create Animation Controller を選択します。
既存のユニット(アニメーション コントローラと同じスケルトンを使用する)にアニメーション コントローラを設定するには、Asset Browser でユニットを選択し、Property Editor のドロップダウン リストからアニメーション コントローラを選択します。
このセクションでは、アニメーション コントローラを構成するさまざまなコンポーネントの概要を説明します。
状態とは、「走る」などのキャラクタが実行する動作を示します。状態は、特定のアニメーション(走っているアニメーションなど)に関連付けられており、イベント内の他の状態(「歩く」や「アイドル状態」など)にトランジションすることができます。さまざまなタイプの状態の詳細については、「アニメーション コントローラの状態」を参照してください。
Anim Controller Editor の Tree View および Node Graph 内のグループに状態をドラッグ アンド ドロップして、階層内の状態を整理することができます。たとえば、選択した状態をグループ状態の上にドラッグして、状態を関連するトランジションとあわせてそのグループに移動することができます。
アニメーション コントローラは、複数のレイヤで整理されています。各レイヤは、1 つの状態のみがアクティブになっている 1 つのステート マシンで構成されます。
複数のレイヤがある場合、上位レイヤのアニメーションが下位レイヤのアニメーションをオーバーライドします。たとえば、走っているアニメーションを最下位レイヤで再生しているときに、左を見るアニメーションを上位レイヤで再生できます。上位レイヤでの目のアニメーションは、下位レベルでの目の動きアニメーションをオーバーライドします。この方法を使用して、ボディの異なるパーツをコントロールするために複数のレイヤを作成することができます。
Anim Controller Editor の Tree View および Node Graph 内のレイヤに状態をドラッグ アンド ドロップして、階層内の状態を整理することができます。たとえば、状態の選択をレイヤの状態上にドラッグして、関連付けられているトランジションとともに状態をレイヤに移動することができます。
「アニメーション コントローラのレイヤ」も参照してください。
Lua スクリプトまたはフローからアニメーション コントローラに送ることができる指定されたアクションです。アニメーション イベントを受け取ると、アニメーション コントローラはある状態から別の状態にトランジションできます。(アニメーション イベントはその名前で識別され、アニメーションの状態間のトランジションを引き起こします)。たとえば、走っている状態からジャンプしている状態へのトランジションです。「アニメーションのスクリプト インタフェース」も参照してください。
Anim Controller エディタのツリー ビューで Anim Events を右クリックし、新しいアニメーション イベントを作成します。
また、Anim Controller エディタの Preview Controls を使用してアニメーション イベントをテストすることができます。
変数は、数値を取ることができる指定された項目です。これは Lua およびフローによりランタイムで変更することができ、running_speed などアニメーションの動作をコントロールする式で使用されます。アニメーション コントローラは、これらの変数に基づいてアニメーションをミキシングする方法を決定できます。たとえば、running_speed 変数に基づいて、歩いているアニメーションと走っているアニメーションのミキシングを再生できます。また、この変数を使用して、アニメーションの再生速度をコントロールできます。
式は、数とステート マシンの変数を使用する小規模な数式です。たとえば、次はすべて式です。
ブレンド セット マスクは、アニメーション コントローラの各ボーンの重み(0 ~ 100%)を指定します。ブレンド セット マスクを使用して、どのボーン ポーズが上位レイヤのアニメーションでオーバーライドされるかを決定します。たとえば、目の動きをコントロールする目的のレイヤは、目のボーンのみが含まれているブレンド セット マスクを使用します。
各状態は、指定したブレンド セット マスクを持つことができます。(ブレンド セット マスクの既定の状態は、すべてのボーンです)。そのため、異なる状態によってオーバーライドするボーンについての異なる決定を行うことができます。たとえば、1 つの状態で目のみをコントロールし、別の状態でボディ全体をコントロールできます。
Skeleton Editor を使用して、各ボーンの重みを設定することによって、スケルトンのブレンド セット マスクを定義します。ボーンの重み値を同時に変更するために、リスト内の複数のボーンを選択することができます。
コンストレイント ターゲットは、変数に非常に似ています。しかし、数値を指定する代わりに、Lua スクリプトから設定できる 3D 空間内の位置を指定します。
コンストレイント ターゲットは、アニメーション コントローラのコンストレイントに対する入力として使用されます。
コンストレイント ターゲットは、アニメーション プレビューでグラブして移動できるものとして表示されます。