Skip to content
第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欄へ割り当てます。

三つのクリップを登録する ​

  1. ControllerをダブルクリックしてAnimatorウィンドウを開きます。Parametersの「+」からFloatを追加し、名前を Speed にします。大文字と小文字を含め、次のコードとそろえます。
  2. 既存のBlend Treeを開きます。まだなければ、空白部分の右クリックから Create State > From New Blend Tree を選び、状態名をLocomotionにします。この状態をレイヤーの既定状態にし、Entryから最初に入ることを確認します。
  3. Locomotionをダブルクリックし、Blend Treeを選択します。InspectorでBlend Typeを 1D、Parameterを Speed にします。
  4. Motionsの「+」から Add Motion Field で三つの行を用意し、Idle・Walk・Runのクリップを割り当てます。
  5. Automate Thresholds を外し、Threshold(その動きを基準にする値)を下の表に合わせます。まず再生速度の倍率は1のまま比較します。
MotionThreshold今回のSpeedの意味
Idle0止まっている
Walk0.5基準の走行速度の半分
Run1基準の走行速度

この対応は今回の作例の設定です。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状態を区別できる