今回はMecanimのAnimationClipを動的に差し替える方法について。
Animationの差し替え
ゲームでアニメーションを使用して制御していると、時々アニメーションを差し替えたくなる事があります。
例えばツボの前ではツボを持ち上げるアニメーションであったり、椅子の前では椅子に座るモーション、ドアの前ではドアを開けるモーションです。
後は、コマンド式RPGのような沢山の技を持つゲームの場合です。コマンドによって、様々な技やエフェクトを展開する事が出来るアレです。
これらをステートマシンで全部登録する事は無理ではありませんが、ロード時間とメモリ的に不利ですし、なによりステートマシンが大変なことになります。
AnimationClipを差し替える
ということで、アニメーションクリップを差し替えます。
やることは単純で、ブレンドでステートを切り替える前にAnimationClipを差し替えてやるだけです。
今回は簡単に、下のようなステートマシンを作成します。
ここで重要なのはClipの方のステートマシンで、Clipという名前のアニメーションクリップを登録します。Clipのアニメーションは基本的に上書きされるので、中身は無くても良いです。
後はClipにステートを切り替える前にAnimationClipを切り替えてしまいます。コードはこんな感じです。
これで下のように、Clipのステートで複数のアニメーションを制御出来るようになります。かつ、Mecanimのブレンドも使えます。
ミソは、animationclipを差し替えた際にリセットされるステートマシン情報を保持・巻き戻ししてる点と、animatorをupdate(0)で強制的に初期化してる点です。