こんにちは。ラルトン(@raruton_blog)です。
Unityの3Dゲームを作っているときに、「手だけは別の動きをして欲しいな」などと思ったことはないでしょうか。
例えば、歩いているアニメーションをしているときに、手だけは銃を撃つアニメーションをしているなどです。
そこで本記事では、このような体の一部分だけ別の動きをさせる方法を紹介します。
この記事を読むと、体の一部分だけ特定のアニメーションをさせる方法が分かります。
3Dモデルを動かす方法については、以下の記事を参考にしてください。

やりたいこと
今回は走っているアニメーションと魔法を放っているようなアニメーションを使って実装してみたいと思います。


下半身は走っているアニメーション、上半身は魔法を放っているアニメーションを使って、走りながら魔法を放っている動きを作ろうと思います。

作成手順
アバターマスクの作成
まずは、アバターマスクを作成します。
Projectウィンドウで
Create > Avatar Mask
でアバターマスクを作成します。

今回は上半身だけ魔法を放っているアニメーションにしたいので、名前を”UnityChanUpper”としました。
そして、UnityChanUpperのInspectorウィンドウのHumanoidを以下の様に、動いてほしい部分だけ緑色にします。

これで、アバターマスクは完了です。
アニメーターコントローラーで新しいレイヤーを作成する
続いて、Animator Controllerを開きます。
Animator Controllerが開けたら、
左上にあるLayersを選んで、+ボタンを押して、新しいレイヤーを作成します。
名前は”Upper Layer”としました。

続いて、Upper Layerの歯車マークを押して、
Weightを1に、Maskは先ほど作成したアバターマスク(UnityChanUpper)を選択します。
そして、BlendingをOverrideにします。

アニメーションをセットする
最後にアニメーションを各レイヤーにセットしていきます。
まず、Base Layerには走っているアニメーションを設定します。

続いて、Upper Layerには魔法を放っているアニメーションを設定します。

もし、条件付きでアニメーションを遷移させたい場合は、Base LayerとUpper Layerとで、同じ条件でアニメーションを切り替わるようにすれば大丈夫です。
これで完成です!

まとめ
いかがだったでしょうか。
今回の記事では、体の一部分だけ別のアニメーションをさせる方法について紹介しました。
今回使ったアニメーションは全て、Mixamoというサイトから持ってきました。
今回使用したアニメーション以外にも、豊富なアニメーションが無料で使用できるので、気になった方はアクセスしてみてください。
他にも、Unity Asset Stroreで無料のアニメーションがたくさんあります。どちらもうまく活用しましょう。
ここでは、使いやすいアニメーションがたくさん入っているBasic Motions FREEを掲載しておきます。それでは!
© Unity Technologies Japan/UCL
