【Unity】Animator ControllerのLayerを使ってモーションを一部だけブレンドしたり加算したりする

Animator ControllerのLayerを使ってモーションを一部だけブレンドしたり加算したりする方法をまとめます。

Unity2019.1.10

Animator ControllerのLayerとは?

Animator ControllerにはLayersというタブがあり、ここからアニメーションの「レイヤー」を追加できます。

f:id:halya_11:20190721153442p:plain

レイヤーには大きくの機能二つあります。
一つ目は一部のボーンだけを他のモーションに置き換える機能です。
つまり「上半身だけを他のモーションに差し替える」といったことができます。

f:id:halya_11:20190721153600g:plain

もう一つは再生中のモーションに他のモーションを加算する機能です。

f:id:halya_11:20190721153809g:plain

Overrideブレンドで一部のボーンだけを他のモーションに置き換える

さてAnimator ControllerのLayerにはBlendingという設定項目があります。
これをOverrideにすると一部のボーンだけを他のモーションに差し替えることができます。

f:id:halya_11:20190721154410p:plain

Overrideモードの具体的な設定手順については、Avatar Maskの知識も必要になってくるため、別の記事で説明しています。

light11.hatenadiary.com

Additiveブレンドで再生中のモーションに他のモーションを加算する

さて次にAdditiveブレンドモードで再生中のモーションにほかのモーションを加算してみます。

いま、走りモーション中にダメージモーションに遷移することを考えます。
レイヤーを用いずに実装すると、次のように一度立ち止まってダメージモーションに遷移します。

f:id:halya_11:20190721154758g:plain

場合によってはこれでもいいかもしれませんが、立ち止まらずにダメージを受けるようにしたい場合には不適切です。
このような場合、BlendingをAdditiveにしたレイヤーを作成し、このレイヤーでダメージモーションを再生します。
このときWeightはどちらのレイヤーも1に設定しておくことを忘れないようにしてください。

f:id:halya_11:20190721155116p:plain

このように設定すると、Baseレイヤーで再生中のモーションに対してAdditiveレイヤーのモーションが加算されます。
したがって次のように走りながらダメージを受けるモーションを再生できます。

f:id:halya_11:20190721153809g:plain

関連

light11.hatenadiary.com