見出し画像

【Unity中級者向け】Animator応用編④|Animator Override Controllerでキャラごとのモーションを差し替える

これまでの応用編では、Blend Treeによるアニメーションの切り替えや、Animator Layer・Avatar Maskを使った上半身と下半身の動きの組み合わせを学習しました。

今回は、Animator Override Controller(アニメーター・オーバーライド・コントローラー)を使って、キャラクターのモーションを差し替えてみます。

例えば、同じ移動操作でも、キャラクターによって待機ポーズや歩き方を変えたいことがあります。
そのたびにAnimator Controllerを複製して、それぞれの設定を管理していると、あとから修正するときに手間がかかります。

Animator Override Controllerを使えば、アニメーションを切り替える仕組みを共通にしながら、再生するAnimationClipだけを変更できます。

今回は、これまで使ってきたキャラクターと2D Blend Treeを利用し、待機と歩行を女性用モーションに差し替えます。

Animator 応用編【全5回】

  1. Blend Tree入門 ― Idle / Walk / Runを滑らかにつなぐ

  2. 2D Blend Tree ― 上下左右の移動アニメーション

  3. Animator Layer / Avatar Mask ― 上半身だけ別アニメーション

  4. Animator Override Controller ― キャラごとにモーションを差し替える

  5. StateMachineBehaviour ― Stateの開始・終了に処理を入れる



1.Animator Override Controllerとは?

Animator Controllerには、アニメーションを切り替えるための仕組みが設定されています。

例えば、次のようなものです。

  • State

  • Transition

  • Parameter

  • Blend Tree

Animator Override Controllerは、これらの仕組みを引き継ぎ、使用するAnimationClipを別のClipに差し替えるためのアセットです。

今回のサンプルでは、次のように役割を分けます。

元のAnimator Controller

MoveX・MoveYの値に応じて、待機や前後左右の歩行を切り替えます。

Animator Override Controller

元のControllerで使用している待機・歩行のClipを、女性用のClipへ差し替えます。

つまり、「いつ、どの動きを再生するか」は共通にして、「実際にどんな動きをするか」を変更するということです。

なお、Override Controller自体がキャラクターのモデルや衣装を変更するわけではありません。今回は動きの違いを確認しやすいように、同じモデルで比較します。


2.今回使うキャラクターとAnimationClip

今回は、応用編②で使用したキャラクターと、2D Blend Treeが設定されたAnimator Controllerを使います。
キャラクターは前回作成したキャラクターを複製し、違いが分かるように横に並べておきます。

BBlend Treeには、待機と8方向の歩行、合計9個のAnimationClipが登録されている状態を想定しています。

  • Idle:待機

  • Forward:前進

  • Backward:後退

  • Left:左移動

  • Right:右移動

  • Forward Left:左前への移動

  • Forward Right:右前への移動

  • Backward Left:左後ろへの移動

  • Backward Right:右後ろへの移動

今回は、これらを対応する女性用のAnimationClipへ差し替えます。MoveX・MoveYや、Blend Treeに設定した各方向の座標は、そのまま使います。

差し替え用のモーションには、Kevin IglesiasのHuman Animationsに含まれる女性用のAnimationClipを使用します。

待機モーションは、次のフォルダーにあります。

Kevin Iglesias → Human Animations → Animations → Female → Idles

歩行モーションは、次のフォルダーにあります。

Kevin Iglesias → Human Animations → Animations → Female → Movement → Walk

この中から、待機と前後左右、各斜め方向の歩行モーションを選びます。


FBXの中にあるAnimationClipを使う

Projectには、青い立方体のアイコンで表示されるFBXファイルがあります。
そのFBXを展開すると、中にAnimationClipが表示されます。
今回、Override欄に登録するのは、FBXの中にあるAnimationClipです。

待機や歩行の方向を名前とプレビューで確認しておきましょう。
今回はスクリプトでキャラクターを移動させるため、歩行にはRootMotionフォルダー外のモーションを使います。

任意のフォルダを作成し、それぞれの AnimationClip を複製して格納しておきます。

また、次の設定が確認できていることを前提に進めます。

  • キャラクターとモーションがHumanoidとして使用できる

  • 待機・歩行のLoop TimeがON

  • キャラクターのAnimatorのApply Root MotionがOFF


3.元のAnimator Controllerを確認する

まず、キャラクターを選択し、InspectorのAnimatorコンポーネントを確認します。
Controller欄に設定されているAnimator Controllerが、今回の差し替え元です。
Animatorウィンドウで、そのControllerのBase Layerにある2D Blend Treeを開きましょう。

MoveX・MoveYを使い、待機と前後左右のモーションが登録されていることを確認します。この段階でゲームを再生し、いつもの待機・歩行が正常に動くことも確認しておきます。

ここまでうまくできたいない場合は、応用編②を確認し、準備をしておきます。

前回の上半身用Layerが残っていても、問題ありません。
今回の目的はBase Layerの待機・歩行の差し替えです。
比較するときは、上半身の別アニメーションを再生していない状態で確認しましょう。


4.Animator Override Controllerを作成する

Projectウィンドウで、Controllerを保存したいフォルダーを開きます。
右クリックして、次の項目を選択します。

Create → Animation → Animator Override Controller

 作成したアセットには、FemaleOverrideController と名前を付けておきましょう。


作成したFemaleOverrideControllerを選択すると、Inspectorに設定が表示されます。

Controller欄に、先ほど確認した元のAnimator Controllerをドラッグ&ドロップしてください。

ここで指定するのは、キャラクターのGameObjectではなく、ProjectにあるAnimator Controllerのアセットです。

Controllerを指定すると、元のControllerで使用しているAnimationClipの一覧が表示されます。

この一覧から、差し替えたいClipを設定していきます。


5.女性用の待機・歩行に差し替える

FemaleOverrideController の Inspectorには、元のClipと、差し替え先を指定するOverride欄が表示されます。

まず、元の待機モーションに対応するOverride欄へ、女性用の待機Clipをドラッグ&ドロップします。

続いて、前後左右の歩行モーションも差し替えましょう。


名前だけで判断しにくい場合は、Clipのプレビューで動く方向を確認してください。


差し替える対象は「AnimationClip」

ここで押さえておきたいのは、一覧に表示されるのはState名ではなく、元のAnimationClipだという点です。
例えば、AnimatorのStateに「Move」という名前を付けていても、Override Controllerには、その中で使っているIdleやWalkのClipが表示されます。

Blend Treeの中に登録しているClipも、この一覧から差し替えられます。

また、同じ元のClipが複数の場所で使われている場合、そのClipの差し替えは、それらの使用箇所に共通して適用されます。


差し替えを指定していないClipは、元のClipを使用します。

8方向のBlend Treeを使用している場合は、斜め方向の歩行も対応する女性用Clipへ差し替えると、方向ごとの動きをそろえられます。


6.キャラクターに設定する

作成したOverride Controllerを、キャラクターに設定します。

  1. Hierarchyでキャラクターを選択する

  2. InspectorのAnimatorコンポーネントを確認する

  3. Controller欄にFemaleOverrideControllerをドラッグ&ドロップする

これで、キャラクターは元のAnimator Controllerの仕組みを使いながら、指定した女性用モーションを再生するようになります。

AnimatorのAvatar欄は、使用しているキャラクターの設定をそのまま使います。

Override Controllerに差し替えたからといって、女性用モーションのAvatarをここに設定する必要はありません。


移動スクリプトはそのまま使える

今回、MoveX・MoveYというParameter名や、移動の仕組みは変えていません。

そのため、これまで使用してきた移動スクリプトは、そのまま使えます。

スクリプトからMoveX・MoveYを渡すと、元のBlend Treeと同じルールで、差し替えたClipが再生されます。

新しいParameterやTransitionを作り直す必要はありません。


7.再生して動きを確認する

ゲームを再生し、まず何も入力しない状態を確認しましょう。

待機ポーズが、女性用のIdleに変わっていれば、待機モーションの差し替えは成功です。

次に、前後左右へ移動します。
それぞれ、入力した方向に合うモーションが再生されるか確認してください。

操作方法や移動処理は同じなのに、キャラクターの動きが変わることを体験できれば、今回の目的は達成です。


8.うまく動かないときの確認ポイント



10.まとめ

今回は、Animator Override Controllerを使い、待機・歩行モーションを女性用のAnimationClipへ差し替えました。


次回予告

次回は、応用編の最終回です。

StateMachineBehaviourを使い、Stateの開始・終了に合わせて処理を実行する方法を紹介します。

「あるアニメーションに入ったときに処理を始める」「そのStateから出たら処理を終える」といった、Animatorとスクリプトの連携を学習していきましょう。


こちらはUnity初心者向けの記事をテーマ別にまとめています。
▼ Unity初心者向け記事まとめはこちら


こちらのマガジン「ミニゲーム作成講座 全8回セット」でもシーンの切り替えなどを活用して、初心者でも知識ゼロから作れるミニゲーム作成講座を紹介しています。

さらにステップアップの「スマホで遊ぶジャンプゲーム 8回セット」のマガジンもぜひご活用ください。


ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

いいなと思ったら応援しよう!

ファイブボックス よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!