アニメーションを付けよう
3Dモデルを作ったら、次は動かしてみよう。このチュートリアルでは、Blenderで歩行・待機アニメーションを作り、UnityのAnimator ControllerとBlend Treeで滑らかに切り替える方法を学ぶ。すべてAIとの会話で進めていくよ。
前提条件
- Blender と Unity が起動していて、OpenForge MCP と接続済みであること
- Unity上にアニメーションを付けたいキャラクターモデルがあること(Blenderで作ったものでも、インポートしたものでもOK)
- キャラクターにアーマチュア(ボーン)が設定済みであること
ボーンが入っていないモデルにはアニメーションを付けられない。まずBlenderでアーマチュアを追加する必要がある。
あなた:
Blenderで開いているキャラクターモデルにヒューマノイドのアーマチュアを追加して。身長に合わせてスケールを調整して
これでボーンが入った状態になるよ。
ステップ1: 待機アニメーションを作る(Blender)
まずは一番基本の「何もしていない状態」のアニメーションから作ろう。
あなた:
Blenderでキャラクターの待機(Idle)アニメーションを作って。自然に呼吸しているような動きで、上下にゆっくり揺れる感じにして。フレーム数は60フレームでループするようにして
AIの動き: Blenderのアクションエディタに「Idle」という新しいアクションが作られて、胸のボーンと肩のボーンに上下の微妙な動きのキーフレームが打たれる。60フレーム目が1フレーム目と同じポーズになるので、ループ再生したときに自然につながるよ。
あなた:
アニメーションをプレビューして見せて
AIの動き: Blenderでアニメーションが再生されて、スクリーンショットまたはプレビューが返ってくる。
ループアニメーションは、最初と最後のポーズが一致していることが大事。つなぎ目でカクッとなる場合は、こう頼もう。
あなた:
Idleアニメーションの最初と最後のフレームが滑らかにつながるように調整して
ステップ2: 歩行アニメーションを作る(Blender)
次に歩行アニメーション。
あなた:
同じキャラクターに歩行(Walk)アニメーションを作って。普通の歩き速度で、腕も自然に振るようにして。30フレームで1歩のサイクルにして、ループ可能にして
AIの動き: 「Walk」という新しいアクションが作られる。脚のボーンが前後に動き、腕が逆方向に振られるキーフレームが打たれる。
あなた:
歩行中に少し体が左右に揺れるようにして。リアルな歩き方になるように
AIの動き: 腰のボーンに左右の微妙な回転が追加されて、より自然な歩行になる。
ステップ3: 走行アニメーションを作る(Blender)
歩行ができたら走行も作っておこう。後でBlend Treeで使う。
あなた:
走行(Run)アニメーションも作って。Walkより速いテンポで、20フレームで1サイクル。腕の振りを大きくして、体の前傾を少し強めにして
AIの動き: 「Run」アクションが追加される。Walkと比べてストライドが大きく、テンポが速い動きになる。
ステップ4: アニメーションをエクスポートする
3つのアニメーションが揃ったら、Unityに持っていこう。
あなた:
Blenderで作ったIdle、Walk、Runの3つのアニメーションをFBXでエクスポートして。Unityのプロジェクトフォルダに保存して
AIの動き: FBXファイルがエクスポートされて、Unityのプロジェクトに配置される。アニメーションクリップとして3つのアクションが含まれた状態になるよ。
AIが自動で適切な設定を選んでくれるけど、もし問題がある場合は次のように指定できる。
あなた:
FBXエクスポートの設定で、スケールを1.0にして、アニメーションのベイクをオンにして
ステップ5: Animator Controllerを作る(Unity)
ここからはUnity側の作業。Animator Controllerでアニメーションの状態遷移を管理しよう。
あなた:
キャラクターにAnimator Controllerを作って設定して。名前は「CharacterAnimator」にして
AIの動き: Animator Controllerが作成されて、キャラクターのAnimatorコンポーネントに設定される。
状態(State)を追加する
あなた:
CharacterAnimatorに「Idle」「Walk」「Run」の3つの状態を追加して。それぞれ対応するアニメーションクリップを割り当てて。デフォルト状態はIdleにして
AIの動き: Animator Controller内に3つのStateが作成されて、それぞれにアニメーションクリップが紐づけられる。Idleがオレンジ色のデフォルト状態になる。
パラメータを追加する
あなた:
Animatorに「Speed」というFloat型のパラメータを追加して。デフォルト値は0にして
AIの動き: AnimatorのParametersタブにSpeedパラメータが追加される。
ステップ6: 遷移(Transition)を設定する
状態間の切り替え条件を作ろう。
あなた:
IdleからWalkへの遷移を作って。条件はSpeedが0.1より大きいとき。遷移時間は0.2秒にして
AIの動き: Idle状態からWalk状態への矢印(Transition)が追加されて、条件が設定される。
あなた:
WalkからIdleへの遷移も作って。条件はSpeedが0.1以下のとき。遷移時間は0.2秒にして
AIの動き: Walk状態からIdle状態への戻りの遷移が追加される。
あなた:
WalkからRunへの遷移を作って。条件はSpeedが0.6より大きいとき。遷移時間は0.15秒にして
AIの動き: 歩行から走行への遷移が追加される。
あなた:
RunからWalkへの遷移も作って。条件はSpeedが0.6以下のとき。遷移時間は0.15秒にして
AIの動き: 走行から歩行への戻りの遷移が追加される。
遷移時間(Transition Duration)が短すぎるとアニメーションの切り替えがパキッとして不自然になる。長すぎるとモッサリする。0.1秒から0.3秒の間で試してみよう。
ステップ7: Blend Treeで滑らかに切り替える
遷移(Transition)だと「歩いている」「走っている」の2択になるけど、Blend Treeを使えばSpeedの値に応じて歩行と走行をスムーズにブレンドできる。
あなた:
Animator ControllerのWalkとRunの状態を削除して、代わりにBlend Treeを1つ作って。名前は「Locomotion」にして。パラメータはSpeedで、Idle(Speed=0)、Walk(Speed=0.5)、Run(Speed=1.0)の3つのモーションを設定して
AIの動き: WalkとRunの状態がBlend Tree「Locomotion」に置き換えられる。Speedの値が0のときはIdle、0.5のときはWalk、1.0のときはRunが再生されて、中間の値では自動的にブレンドされる。
あなた:
Speedを0から1までゆっくり変化させたときのプレビューを見せて
AIの動き: Speedを段階的に変化させた結果がプレビューされる。待機からゆっくり歩き出し、次第に走り出す動きが確認できるよ。
今回使ったのは1D Blend Tree(パラメータ1つで制御するタイプ)。2D Blend Treeを使えば、「前進速度」と「横移動速度」の2つのパラメータで8方向の移動アニメーションをブレンドすることもできる。
ステップ8: トリガーでアクションを再生する
歩行と走行以外にも、ジャンプのような単発のアクションをトリガーで再生する方法を覚えておこう。
あなた:
Blenderでキャラクターのジャンプアニメーションを作って。その場で垂直にジャンプする動きで、離陸から着地まで20フレームにして
AIの動き: BlenderでJumpアクションが作成される。
あなた:
ジャンプアニメーションをUnityにエクスポートして、Animator Controllerに「Jump」というTrigger型パラメータを追加して。Locomotion状態からJump状態への遷移をJumpトリガーで制御して。Jumpが終わったらLocomotionに戻るようにして
AIの動き: Trigger型パラメータとJump状態が追加される。Triggerは一度発火したら自動でリセットされるので、ボタンを押すたびに1回だけジャンプが再生される仕組みになる。
- Trigger: 一度発火したら自動リセットされる。ジャンプや攻撃のような単発アクション向き。
- Bool: 手動でオン・オフを切り替える。しゃがみ状態のような持続するアクション向き。
ステップ9: テストする
すべてが揃ったら、実際に動かして確認しよう。
あなた:
キャラクターにシンプルな移動スクリプトを付けて。WASDキーで移動できるようにして、移動速度に応じてAnimatorのSpeedパラメータを更新するようにして。スペースキーでJumpトリガーを発火させて
AIの動き: 移動スクリプトが生成されてキャラクターにアタッチされる。
あなた:
シーンを再生して、キャラクターを歩かせたところのスクリーンショットを撮って
AIの動き: プレイモードに入り、キャラクターが歩行アニメーションで移動している様子が確認できる。
よくある問題と対処
アニメーションでつまずきやすいポイントをまとめておくよ。
足が地面にめり込む
あなた:
歩行アニメーションで足が地面の下に沈んでいる。修正して
AIがルートモーションの設定やボーンの位置を調整してくれる。
アニメーションの速度が合わない
あなた:
移動速度に対してアニメーションが速すぎる。足が滑っているように見える。アニメーションの再生速度を調整して
AIがAnimator StateのSpeed Multiplierを調整してくれる。
Tポーズのまま動かない
Animatorの設定が正しくない可能性がある。
あなた:
キャラクターがTポーズのまま動かない。AnimatorのControllerが正しく設定されているか確認して
まとめ
このチュートリアルで学んだこと:
- Blenderでアニメーション作成 -- Idle、Walk、Run、Jumpの4種類を作った
- FBXエクスポート -- BlenderからUnityへの受け渡し
- Animator Controller -- 状態(State)と遷移(Transition)の設定
- Blend Tree -- Speed値に応じた滑らかなアニメーションブレンド
- Trigger -- 単発アクションの発火制御
- テスト -- 移動スクリプトと組み合わせて実際に動作確認
アニメーションはゲームのキャラクターに命を吹き込む大事な要素。AIとの会話で試行錯誤しながら、気持ちの良い動きを目指してみよう。