第09回 3D探索2
2 / 4 Animator Controllerを作る
このステップの目的
一つのBlend TreeへIdle、Walk、Runを登録し、Speedで混ざり方を変える
ControllerとBlend Treeの役割を分ける
Animator Controllerは、どのアニメーションを再生するかをまとめたアセットです。今回はLocomotion(移動)という一つの状態の中へBlend Treeを置き、三つのクリップを混ぜます。Idle・Walk・Runそれぞれの状態を矢印で結ぶ方法とは区別します。Blend Treeは、値の変化に合わせて複数の動きを連続的につなぐ仕組みです。
開始用にControllerが接続されている場合は、そのアセットを開いて次の設定を確認します。作り直す必要はありません。新規に用意する場合は、Projectウィンドウで Create > Animator Controller を選び、モデルのAnimatorコンポーネントのController欄へ割り当てます。
三つのクリップを登録する
- ControllerをダブルクリックしてAnimatorウィンドウを開きます。Parametersの「+」からFloatを追加し、名前を
Speedにします。大文字と小文字を含め、次のコードとそろえます。 - 既存のBlend Treeを開きます。まだなければ、空白部分の右クリックから
Create State > From New Blend Treeを選び、状態名をLocomotionにします。この状態をレイヤーの既定状態にし、Entryから最初に入ることを確認します。 - Locomotionをダブルクリックし、Blend Treeを選択します。InspectorでBlend Typeを
1D、ParameterをSpeedにします。 - Motionsの「+」から
Add Motion Fieldで三つの行を用意し、Idle・Walk・Runのクリップを割り当てます。 Automate Thresholdsを外し、Threshold(その動きを基準にする値)を下の表に合わせます。まず再生速度の倍率は1のまま比較します。
| Motion | Threshold | 今回のSpeedの意味 |
|---|---|---|
| Idle | 0 | 止まっている |
| Walk | 0.5 | 基準の走行速度の半分 |
| Run | 1 | 基準の走行速度 |
この対応は今回の作例の設定です。0.5が常に人間の歩行速度を表すわけではありません。クリップの歩幅に合わせた調整は次のステップで行います。
text
Speed = 0.0 → Idle
Speed = 0.5 → Walk
Speed = 1.0 → RunまずプレビューでSpeedを手動変更します。0.25ならIdleとWalk、0.75ならWalkとRunの中間の動きになります。0、0.5、1だけでなく中間も試してください。ここで再生できなければ、速度計算へ進む前にMotionの割り当て、Parameter名、モデルとクリップの対応を確認します。Unity公式:1Dブレンディング
Animatorをゲーム状態にしない
「操作可能か」「ゴールしたか」はゲーム側の状態で持ち、Animatorは見た目の再生を担当します。
| 判断 | 担当 |
|---|---|
| 入力を受け付け、移動するか | ゲーム側の移動・進行処理 |
| 実際にどのくらい移動したか | 位置の変化を読む処理 |
| その速度をどの動きで見せるか | AnimatorとBlend Tree |
Runが再生されているという理由で移動を許可するのではなく、移動した結果をSpeedへ渡します。
チェックリスト
- Speedパラメータがある
- Controllerがモデルへ割り当てられ、Locomotionが最初に再生される
- Speedを0、0.5、1とその中間へ変え、三つのモーションと混ざり方を確認した
- ゲーム状態とAnimator状態を区別できる