UnityのAnimator Controller(アニメーターコントローラー)の構築作業は、キャラクターに命を吹き込むための最も重要な工程の一つです。
「素材の準備」から「ステートマシンの構築」まで、実際のUnityエディタ上の操作手順を詳細に解説します。
手順1: アニメーション素材の準備 (Mixamo & Import)
まだアニメーションを持っていない場合、Adobe Mixamoから入手するのが最短です。すでに持っている場合は「手順2」へ進んでください。
- Mixamoでのダウンロード:
- Idle (待機):
Idleで検索。 - Walk (歩行):
Walkingで検索。重要: 右側の設定で 「In Place」にチェックを入れる(これをしないとアニメーション自体が前に進んでしまい、位置ズレの原因になります)。 - Sit (座る):
Sitting Idleなどを検索。 - Sleep (寝る):
Sleeping Idleなどを検索。 - Eat (食べる):
Standing EatやEatingなどを検索。 - 全て
Format: FBX for Unityでダウンロードします。
- Idle (待機):
- Unityへのインポートと設定 (Rig):
- ダウンロードしたFBXファイルをUnityプロジェクトにドラッグ&ドロップ。
- 各ファイルを選択し、Inspectorの Rig タブを開く。
Animation Typeを Humanoid に変更して Apply を押す(これをしないとボーンが正しく動きません)。
- ループ設定 (Animation):
- 各FBXの Animation タブを開きます。
- Idle, Walk, Sit, Sleep:
Loop Timeにチェックを入れる(動きを繰り返すため)。 - Eat:
Loop Timeのチェックを外す(1回食べたら終わりにするため)。 - 最後に Apply。
手順2: Animator Controllerの作成とパラメータ設定
- ファイルの作成:
- Projectウィンドウで右クリック >
Create>Animator Controller。 - 名前を
HumanControllerにします。 - これをシーン上のキャラクター(Animatorコンポーネントがついているオブジェクト)にドラッグ&ドロップして割り当てます。
- Projectウィンドウで右クリック >
- ウィンドウを開く:
- 作成した
HumanControllerをダブルクリックして、Animatorウィンドウを開きます。
- 作成した
- パラメータの作成:
- ウィンドウ左上の Parameters タブをクリックします。
+ボタンを押して、以下の4つを作成します(大文字小文字はスクリプトと完全に一致させてください)。- Speed (Float)
- IsSleeping (Bool)
- IsSitting (Bool)
- DoEat (Trigger)
手順3: 基本動作(Locomotion)の作成
「止まっている状態」と「歩いている状態」を滑らかに切り替えるために、**Blend Tree(ブレンドツリー)**を使います。
- Blend Treeの作成:
- グリッド上の何もないところで右クリック >
Create State> From New Blend Tree。 - 作成された
Blend Treeというボックスを名前変更してLocomotionにします(これが自動的にオレンジ色のデフォルトステートになります)。
- グリッド上の何もないところで右クリック >
- 中身の編集:
Locomotionボックスをダブルクリックして中に入ります。- 作成済みのボックス(Blend Tree)を選択し、Inspectorを見ます。
- Parameter が
Speedになっていることを確認。 - Motion リストの
+を押し、Add Motion Fieldを 2回 選びます。
- アニメーションの割り当て:
- 1つ目の行:
Idleのアニメーションクリップ(FBXの中にある三角マーク)をセット。Threshold(閾値)は0。 - 2つ目の行:
Walkのアニメーションクリップをセット。Thresholdは1(または歩行速度に合わせて調整)。 - 結果: Speedが0ならIdle、Speedが1に近づくと徐々にWalkになります。
- 1つ目の行:
- 親階層に戻る:
- ウィンドウ左上の
Base Layerをクリックして元の画面に戻ります。
- ウィンドウ左上の
手順4: 各ステートの配置と遷移 (Transition)
「寝る」「座る」「食べる」のステートを作り、矢印で繋ぎます。
1. ステートの配置
Projectウィンドウから、アニメーションクリップ(Sleep, Sit, Eat)をAnimatorウィンドウへドラッグ&ドロップします。
2. 矢印(Transition)の設定
ボックス(ステート)を右クリック > Make Transition で矢印を伸ばし、繋いでいきます。
A. Locomotion ⇔ Sleep (寝る)
- 行き (Locomotion -> Sleep):
- 矢印をクリック。
- Has Exit Time: チェックを外す(ボタンを押したらすぐ寝るため)。
- Settings:
Transition Durationを0.25程度に(滑らかに移行)。 - Conditions:
IsSleepingをtrueに設定。
- 帰り (Sleep -> Locomotion):
- 矢印をクリック。
- Has Exit Time: チェックを外す。
- Conditions:
IsSleepingをfalseに設定。
B. Locomotion ⇔ Sit (座る)
- 行き (Locomotion -> Sit):
- 矢印をクリック。
- Has Exit Time: チェックを外す。
- Conditions:
IsSittingをtrueに設定。
- 帰り (Sit -> Locomotion):
- 矢印をクリック。
- Has Exit Time: チェックを外す。
- Conditions:
IsSittingをfalseに設定。
C. Locomotion ⇔ Eat (食べる)
- 行き (Locomotion -> Eat):
- 矢印をクリック。
- Has Exit Time: チェックを外す。
- Conditions:
DoEatを設定(Triggerなのでtrue/false選択はありません)。
- 帰り (Eat -> Locomotion):
- ここが重要です!
- 矢印をクリック。
- Has Exit Time: チェックを入れる(最後まで食べ終わってから戻るため)。
- Exit Time:
1.0(アニメーションの100%完了時)。 - Conditions: 空にする(条件なしで、再生し終わったら自動で戻る)。
完成チェックリスト
これでAnimatorの設定は完了です。以下の挙動になれば正解です。
- ゲーム再生中、コードから
Speedを変えると、歩いたり止まったりする。 IsSittingを true にすると座り続け、false にすると立ち上がる。DoEatをトリガーすると、一度だけ食べる動作をして、自動で元の立ち姿に戻る。
これでスクリプト(HumanLifeAI.cs)からの指令通りにキャラクターが動くようになります。

