Unity – 3_2追加説明

UnityのAnimator Controller(アニメーターコントローラー)の構築作業は、キャラクターに命を吹き込むための最も重要な工程の一つです。

「素材の準備」から「ステートマシンの構築」まで、実際のUnityエディタ上の操作手順を詳細に解説します。


手順1: アニメーション素材の準備 (Mixamo & Import)

まだアニメーションを持っていない場合、Adobe Mixamoから入手するのが最短です。すでに持っている場合は「手順2」へ進んでください。

  1. Mixamoでのダウンロード:
    • Idle (待機): Idle で検索。
    • Walk (歩行): Walking で検索。重要: 右側の設定で 「In Place」にチェックを入れる(これをしないとアニメーション自体が前に進んでしまい、位置ズレの原因になります)。
    • Sit (座る): Sitting Idle などを検索。
    • Sleep (寝る): Sleeping Idle などを検索。
    • Eat (食べる): Standing EatEating などを検索。
    • 全て Format: FBX for Unity でダウンロードします。
  2. Unityへのインポートと設定 (Rig):
    • ダウンロードしたFBXファイルをUnityプロジェクトにドラッグ&ドロップ。
    • 各ファイルを選択し、Inspectorの Rig タブを開く。
    • Animation TypeHumanoid に変更して Apply を押す(これをしないとボーンが正しく動きません)。
  3. ループ設定 (Animation):
    • 各FBXの Animation タブを開きます。
    • Idle, Walk, Sit, Sleep: Loop Timeチェックを入れる(動きを繰り返すため)。
    • Eat: Loop Timeチェックを外す(1回食べたら終わりにするため)。
    • 最後に Apply

手順2: Animator Controllerの作成とパラメータ設定

  1. ファイルの作成:
    • Projectウィンドウで右クリック > Create > Animator Controller
    • 名前を HumanController にします。
    • これをシーン上のキャラクター(Animatorコンポーネントがついているオブジェクト)にドラッグ&ドロップして割り当てます。
  2. ウィンドウを開く:
    • 作成した HumanController をダブルクリックして、Animatorウィンドウを開きます。
  3. パラメータの作成:
    • ウィンドウ左上の Parameters タブをクリックします。
    • + ボタンを押して、以下の4つを作成します(大文字小文字はスクリプトと完全に一致させてください)。
      1. Speed (Float)
      2. IsSleeping (Bool)
      3. IsSitting (Bool)
      4. DoEat (Trigger)

手順3: 基本動作(Locomotion)の作成

「止まっている状態」と「歩いている状態」を滑らかに切り替えるために、**Blend Tree(ブレンドツリー)**を使います。

  1. Blend Treeの作成:
    • グリッド上の何もないところで右クリック > Create State > From New Blend Tree
    • 作成された Blend Tree というボックスを名前変更して Locomotion にします(これが自動的にオレンジ色のデフォルトステートになります)。
  2. 中身の編集:
    • Locomotion ボックスをダブルクリックして中に入ります。
    • 作成済みのボックス(Blend Tree)を選択し、Inspectorを見ます。
    • ParameterSpeed になっていることを確認。
    • Motion リストの + を押し、Add Motion Field2回 選びます。
  3. アニメーションの割り当て:
    • 1つ目の行: Idle のアニメーションクリップ(FBXの中にある三角マーク)をセット。Threshold(閾値)は 0
    • 2つ目の行: Walk のアニメーションクリップをセット。Thresholdは 1(または歩行速度に合わせて調整)。
    • 結果: Speedが0ならIdle、Speedが1に近づくと徐々にWalkになります。
  4. 親階層に戻る:
    • ウィンドウ左上の Base Layer をクリックして元の画面に戻ります。

手順4: 各ステートの配置と遷移 (Transition)

「寝る」「座る」「食べる」のステートを作り、矢印で繋ぎます。

1. ステートの配置

Projectウィンドウから、アニメーションクリップ(Sleep, Sit, Eat)をAnimatorウィンドウへドラッグ&ドロップします。

2. 矢印(Transition)の設定

ボックス(ステート)を右クリック > Make Transition で矢印を伸ばし、繋いでいきます。


A. Locomotion ⇔ Sleep (寝る)

  • 行き (Locomotion -> Sleep):
    • 矢印をクリック。
    • Has Exit Time: チェックを外す(ボタンを押したらすぐ寝るため)。
    • Settings: Transition Duration0.25 程度に(滑らかに移行)。
    • Conditions: IsSleepingtrue に設定。
  • 帰り (Sleep -> Locomotion):
    • 矢印をクリック。
    • Has Exit Time: チェックを外す。
    • Conditions: IsSleepingfalse に設定。

B. Locomotion ⇔ Sit (座る)

  • 行き (Locomotion -> Sit):
    • 矢印をクリック。
    • Has Exit Time: チェックを外す
    • Conditions: IsSittingtrue に設定。
  • 帰り (Sit -> Locomotion):
    • 矢印をクリック。
    • Has Exit Time: チェックを外す。
    • Conditions: IsSittingfalse に設定。

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の設定は完了です。以下の挙動になれば正解です。

  1. ゲーム再生中、コードから Speed を変えると、歩いたり止まったりする。
  2. IsSitting を true にすると座り続け、false にすると立ち上がる。
  3. DoEat をトリガーすると、一度だけ食べる動作をして、自動で元の立ち姿に戻る。

これでスクリプト(HumanLifeAI.cs)からの指令通りにキャラクターが動くようになります。