WASDで前後左右に滑らかに動き回り、Shiftで走り、走りながら上半身だけで攻撃する——3Dアクションゲームの「当たり前の動き」は、実は複数のテクニックの組み合わせでできています。
8方向移動は2D Blend Tree、部位別のアニメーションはAvatar Mask、移動の主導権はRoot Motionの設定——この記事では、Animator Controllerの基本を卒業した人向けに、3Dキャラクター特有のこの3点セットを解説します。
この記事でわかること
- HumanoidリグとAvatarによる アニメーションの使い回し(リターゲティング)
- 2D Blend Tree で作る8方向移動(前後+ストレイフ)
SetFloatの dampTime で入力の急変化を滑らかにする- LayersとAvatar Mask で「走りながら攻撃」を作る
- Root Motion ——移動の主導権をアニメとスクリプトのどちらに渡すか
- 3点セットを1体に統合する実践——8方向に移動しながら、上半身で撃つ
前提: Animator Controllerの基本(State・Transition・Parameters・1D Blend Tree)は Animator Controller入門 で解説しています。ステートマシンに初めて触れる方はそちらから読むのがおすすめです。
HumanoidリグとAvatar:アニメを使い回す仕組み
3Dキャラクターのアニメーション制作で最初に押さえるべきは、自分でアニメーションを作らなくても、他人の作ったアニメーションを使い回せるということです。それを可能にするのがHumanoidリグとAvatarシステムです。
モデルのインポート設定でRigタブのAnimation TypeをHumanoidにすると、Unityはそのモデルの骨格を標準的な人型ボーン構造にマッピングしたAvatarアセットを生成します。この共通の「人型の設計図」を介することで、 体型がまったく違うキャラクター同士でアニメーションを再利用(リターゲティング) できます。
アセットストアで買った「歩き」を自作キャラに、Mixamoの「攻撃」をチームメイトのキャラに——リターゲティングは3Dゲーム開発の物量問題を解決する土台です。仕組みの詳細は 3Dモデルインポートの記事 で解説しています。
2D Blend Treeで8方向移動を作る
「Idle→Walk→Run」のような一直線の変化なら、パラメータ1つの1D Blend Treeで作れます(基本記事参照)。しかしTPSやRPGでよくある 「前を向いたまま横や後ろに移動する(ストレイフ)」 は、前後と左右という2つの軸が必要です。ここで使うのが2D Blend Treeです。

作成手順
- まず
ParametersタブでFloat型のパラメータを2つ作ります:ForwardSpeed(前後 )とRightSpeed(左右)。 - Animatorウィンドウの空きスペースで右クリック →
Create State > From New Blend Tree。ダブルクリックで編集モードへ。 - Inspectorで
Blend Typeを2D Freeform Cartesianに変更し、ParametersにX軸=RightSpeed・Y軸=ForwardSpeedを指定します。 Add Motion Fieldでアニメーションを座標に配置していきます。
| 座標 (X, Y) | アニメーション |
|---|---|
| (0, 0) | 待機 (Idle) |
| (0, 0.5) | 前進歩行 (Walk Forward) |
| (0, 1) | 前進走行 (Run Forward) |
| (1, 0) | 右ストレイフ (Strafe Right) |
| (-1, 0) | 左ストレイフ (Strafe Left) |
| (0, -0.5) | 後退 (Walk Backward) |
これで、2つのパラメータ値が示す「座標」の周囲にあるアニメーションが自動的にブレンドされます。ForwardSpeed = 0.75なら歩きと走りが混ざった早歩きに、(0.5, 0.5)なら「右斜め前への移動」になります。斜め移動用のアニメーションを用意しなくても、縦横のブレンドで補間してくれるのが2D Blend Treeの強力なところです。