【Unity】Avatar Maskを使って上半身だけ別モーションにする

アクションゲームを作っていると、上半身と下半身で別のモーションにしたい時がよくある。

大抵の場合、武器を構えながら・攻撃しながら移動したい時だ。剣を構えながら歩いたり、銃を撃ちながら走ったり。でも、移動専用のモーションがない。そんな時にどうすればいいか。

※Humanoid規格を前提とする。

 

 

Avatar Maskを使う

Avatar Maskとは、モデルの一部分にだけモーションを適用できるフィルタのことだ。頭だけのマスクを作って表情を変えたり、先ほどのように上半身だけ武器のモーションを適用できる。

 

特定の部位だけにモーションを適用できる。

 

 

使い方は簡単だ。

Projectビューにて右クリックで、Create -> Avatar Mask でAvatar Maskを作成

 

 

作成したAvatar Maskに「Upper」など分かりやすい名前をつけ、選択してInspectorビューを開く。

Inspectorビューにて「Humanoid」を選択すると、マスクしたい部位を選択する画面が開く。緑が反映される部位で、赤が適用外の部位だ。今回は上半身のマスクを作りたいので、上半身だけを緑色にする。

(頭を適用外にしたのは、頭を敵のほうへ向ける処理を書きたかったためで、適用するかどうかは各々のプロジェクトの仕様と相談しよう)

 

 

次に、Mecanim(Animator Controller)へ移動する。

Layers で+ボタンを押すと、新たなレイヤーが作成できる。Upper Layerなど分かりやすい名前をつけよう(画像ではすでに作成済み)

 

 

作成したレイヤーの歯車アイコンをクリックし、Weightを1に設定。Maskの項目で、先ほど作成したAvatar Maskを指定する。

 

Weightは、どの程度の重みでモーションを適用するか指定する。0.5だと半分はBase Layer、もう半分はUpper Layerのモーションがブレンドされて適用される。

IK Passにチェックを入れるとIK処理が使えるようになるため、銃を撃つ方向に合わせて胴体をひねる処理を書きたい場合はチェックを入れる。

 

 

以上で設定は完了。後は、Upper Layerに専用のモーションを入れれば、上半身だけ別の動きになる。