ゲームを開発していると同じキャラクターだけど違うモーションで動かしたり、それこそ女性キャラ向けに別モーションを使いたいことってありますよね。
そのような時に便利な機能がUnityにありましたのでそれを紹介したいと思います。
モーションの差し替え
現在開発中のゲームで一部のキャラのモーションだけを差し替えたくなることがありました。
元々はソースコードで上書きしようかと考えていたのですが
調べているうちに元々Unityにはそれを実現する機能がありました。
その名も「AnimatorOverrideController」です。

設定方法も簡単ですよ!
必要ファイルの作成
まずは必要なファイルを作成します。
「Animator Override Controller」を作成
「Project」ウィンドウで右クリックを押すと下記のような画面になるので
をすることで上書きに必要な「Animator Override Controller」が追加されます。
差し替えるモーションを設定
そして作成されたファイルを選択すると
「Inspector」ウィンドウに下記のように表示されるので
下記の対応を行います。
ちなみに設定するアニメーション指定がNoneの場合はデフォルトで設定されているものが再生されるので必要なものだけ設定すればOKです。

とっても簡単ですね!
Animator Override Controllerを設定
先程作成したファイルを設定していきます。
設定は非常に簡単で「Animator」に設定している
AnimatorControllerを作成したものに差し替えるだけです。

これで再生すると問題なくモーションが差し替わっていると思います!
スクリプトでの指定方法
私の場合はスクリプトで変更したいことがあったのでその方法を利用しました。
スクリプトから上書きする場合は下記のように「Animator」の「runtimeAnimatorController」に設定したいAnimatorOverrideControllerを指定します。
Animator anim = GetComponent<Animator>(); anim.runtimeAnimatorController = newAnimOverrideCtrl;

これでプログラム上でいつでも変えられるようになりましたね!
追記:元のモーションに戻したい
上書きモーションをデフォルトのモーションに戻したい場合
初期化時などに「デフォルトモーション」を保持しておく必要があります
下記のような処理になります。
// デフォルトを保持しておく AnimatorOverrideController animOverrideDefault = new AnimatorOverrideController(animator.runtimeAnimatorController); // 戻すときは保持していたデフォルトを指定 animator.runtimeAnimatorController = animOverrideDefault;

これでモーションを上書きしたり、戻したり
自由自在です!
動作を確認する
私が開発しているゲームでは
の3つを忍者っぽくしたものを設定してみました。
その時の紹介動画がこちらです。

思ったよりも「なにか違う存在感」が出ましたね!
これで個性のあるキャラクターを作れそうです
活動内容のPR
下記が本サイトでの活動内容となります。
最後に
いかがでしたでしょうか?
今回はアニメーションの差し替えを対応してみました。
かなり簡単に実現できる機能でしたので「少しキャラクターの雰囲気を変えたい」とお考えの方はぜひご活用ください。

これで色々な雰囲気なキャラが作れると思うと
世界が広がりますね!
このサイトではゲーム開発や英語学習、日常で良さそうなことを記事にして発信しております。もしご興味がありましたら画面左下のベルマークからご購読いただけますと幸いです。
では今回はここで終わりたいと思います。
ここまでお読みいただきありがとうございました。
コメント