UnityでAnimator Override Controllerを使う

記事内に広告が含まれています。

Unityでキャラクターのアニメーションの遷移を管理するのにAnimatorControllerを使用してきました。

Unityのアニメーターコントローラーのブレンドの使い方
Unityのアニメーターコントローラーのブレンドの基本的な使い方を学習していきます。

Animatorの状態や遷移条件等が同じ複数のキャラクターを扱う場合は同じAnimatorControllerを共有して同じ動作をさせるか、

それぞれ別のAnimatorControllerを作成し取りつけます。

同じ動作をさせる場合はまったく同じアニメーション、遷移条件で遷移するキャラクターしか作成出来ません。

しかし状態と遷移条件が同じ場合はまったく別のAnimatorControllerを作成しアニメーションクリップだけを変更しているだけなので手間が増えます。

そんな時にAnimatorOverrideControllerを使用すると状態と遷移等はそのままにアニメーションクリップだけを別にする事が出来ます。

スポンサーリンク

AnimatorOverrideController

AnimatorOverrideControllerは既存のAnimatorControllerを拡張したアニメーターコントローラーです。

その為、まずは通常のアニメーションを管理するコントローラーを作成します。

通常のAnimatorControllerを作成

Assetsフォルダ内で右クリック→Create→Animator Controllerを選択し、名前をBaseとします。

オーバーライドするアニメーターコントローラー

↑のような状態と遷移を作成します。

アニメーターコントローラーの状態や遷移の作り方については

Unityのアニメーションの切り替えシステムとスクリプト
Unityのアニメーションの切り替えシステムであるAnimatorControllerの設定とスクリプトからアニメーションを制御していきます。

等をご覧ください。

アニメーションパラメータにはFloat型のSpeed、Bool型のJumpを作成します。

それぞれの状態にはStandardAssetsに入っているIdle、Walk、Jumpのアニメーションクリップを設定しています。

ヒエラルキーに3DモデルのEthanを配置しCharacterControllerの取り付けとAnimatorに今作成したBaseを設定します。

キャラクターを動かすスクリプトを作成し取りつけます。

シンプルなキャラクター移動スクリプトになります。

キャラクター移動スクリプトに関しては

Unityでキャラクターの移動をプログラミングしてみる
Unityで3Dキャラクターモデルを配置し、キャラクターをCharacterControllerの機能を使って移動させるようなプログラミングをしてみます。

等をご覧ください。

キャラクターの設定が出来たので通常のAnimatorControllerでのキャラクターを見てみましょう。

↑のように通常の動きを確認出来ました。

AnimatorOverrideControllerの作成

次にさきほど作成したBaseアニメーターコントローラーをオーバーライドするAnimatorOverrideControllerを作成します。

Assetsフォルダ内で右クリック→Create→Animator Override Controllerを選択し名前をOverride(名前は適当に付けてください)とします。

animatoroverridecontrollerの作成

↑のように通常のAnimatorControllerのアイコンの左下は矢印ですがAnimatorOverrideControllerの場合は+表記になっています。

作成したOverrideアニメーターオーバーライドコントローラーを選択し、インスペクタを表示します。

OverrideのControllerにBaseアニメーターコントローラーをドラッグ&ドロップします。

AnimatorOverrideControllerのインスペクタ

↑のようにBaseの状態に設定されているアニメーションクリップが表示される(↑の画像ではすでに変更しています)ので対応するアニメーションクリップを変更してください。

さきほどEthanをCtrl+Dでコピーし、コピーした方のEthanのAnimatorにOverrideを設定します。

↑では左側がBase、右側がOverrideを設定したキャラクターです。

OverrideはBaseアニメーターコントローラーのアニメーションクリップが変わっているだけなので同じ動作をしアニメーションだけが変わっているのがわかると思います。

別のキャラクターにAnimatorControllerを設定する時にアニメーションクリップだけを変更したい時はAnimatorOverrideControllerを使ってみるといいかもしれませんね。

タイトルとURLをコピーしました