バッテラが如く

プログラミングしましょ!

【Unity】Animatorで複数のモーションを同時に再生させる方法

この記事の情報は次のバージョンで動作確認しています。

  • MacOS Monterey (12.1)
  • Unity (2021.3.2f1)
  • Unity

    はじめに

    どうも、バッテラです。

    Animatorにレイヤーという概念があるのを知ったのでそれを使ってモーションを同時進行させるというものをやってみようと思います。

    ゴール

    今回は走るモーションをしつつダメージを喰らった時に顔が痛がるモーションをするというものを作ります。

    完成形がこちらです。

    走るモーションとダメージを喰らったモーションが同時に起きてるのが分かると思います。

    普通はこうなる (変更前)

    一旦走るモーションのをやめてダメージを喰らうモーションになります。このように直列のシーケンスにしかできないのです。

    レイヤーを作り並列化させる

    デフォルトではBaseLayerというのができています。

    上記に加えて新しいレイヤーを作ります。

    レイヤーを作るには、

    [Layers]タブで+ボタンを押すと新しいレイヤーが作成できます。

    次はレイヤーの設定をしていきます。歯車マークをクリックします。

    パラメータを変更します。

    • Weight → 1
    • Blending → Addtive

    BlendingAddtiveだとBase Layerを再生しつつ別のモーションを動かすことができます。

    Addtiveレイヤーを実装する

    新しく作ったレイヤーにダメージのモーションを登録していきます。

    初期モーションが勝手に発動するのでDefaultのStateは空のものをあてます。上図でいうidleがそれです。