Unity では Animation Layers を使用すると、複雑なステートマシンを体の各部分ごとに管理することができます。例えば、下半身のレイヤーで歩きやジャンプを管理して、上半身のレイヤーではオブジェクトを投げたり、撃ったりする、といった場合です。
アニメーションレイヤーは Animator Controller の左上角にある Layers Widget から管理することができます。
ウィンドウ右側の歯車アイコンをクリックすると、そのレイヤーの設定が確認できます。
それぞれのレイヤーで、マスク(モデルの一部分のみアニメーションさせるためのもの)とブレンディングの種類を指定できます。 Override を選ぶと、他のレイヤーからの情報は無視され、 Additive を選ぶと、アニメーションが前のレイヤーの上に追加されます。
ウィジェットの上の + を押すと新規レイヤーが追加できます。
Mask プロパティーではこのレイヤーで使用するマスクを指定します。例えば、キャラクターが歩いたり走ったりしている最中に、上半身にだけ投げるアニメーションを使用したいような場合は、上半身のレイヤーマスクを次のように設定します:
レイヤーのサイドバーにある’M’マークは、そのレイヤーにマスクがある事を示しています。
アバターボディマスクの詳細については ヒューマノイドアニメーションでの作業 を参照してください。
場合によっては、同じステートマシーンを異なるレイヤーで再利用できるようにした方が便利な事があります。例えば「負傷した状態」の挙動を表現したいときに、「負傷した状態」での歩き/走り/ジャンプのアニメーションを「健康な状態」の各アニメーションの代わりに使いたいような場合です。どれかレイヤーの Sync チェックボックスをクリックしてから、そのレイヤーと同期したいレイヤーを選択してください。すると、ステートマシーンの構造は同じ状態になりますが、各ステートで使われるアニメーションクリップは個別のままになります。
この事は、同期したレイヤーは独自のステートマシーンを持たず、代わりに同期元レイヤーとインスタンス関係になっている事を意味します。同期先のレイヤーで行うステートマシーンの構造やレイアウトのどんな変更も(例えばステートやトランジションの追加/削除など)、同期元のレイヤーにも反映されます。同期したレイヤーで唯一可能な変更は、各ステートで使用するアニメーションの選択だけです。
Timing チェックボックスを使うと、同期されたレイヤーにあるアニメーションの長さを、重みを用いて調整する事が可能になります。 Timing が選択されていない場合、同期先のレイヤーにあるアニメーションが調整されます。調整は、元のレイヤーにあるアニメーションの長さにあわせて伸縮する事で行われます。オプションが選択されている場合、アニメーションの長さは、重みを基準にして両者のバランスをとる形で調整されます。どちらの場合でも(選択しても、選択しなくても)アニメーターはアニメーションの長さを調整します。選択しない場合、元のレイヤーが唯一のマスターになります。選択した場合、両者の間をとります。
レイヤーのサイドバーにある’S’マークは、そのレイヤーが同期されている事を示しています。