[Unity] アニメーションのブレンド


アニメーションを同じステート内でブレンドしながら変更する方法です。
複数のアニメーション間を0-1の数値で表現できるのでいろいろと便利です。

まずは新しいステートを作ります。ここではRun_endとしました。

作成したステートを右クリック->Create BlendTree in State を選択します

するとMotionのところがBlend Tree になるので、これをダブルクリック

+ボタン-Add Motion Field を押してモーションを追加します

モーションを追加すると自動的にブレンドパラメーターを設定してくれます。

アニメーションのブレンドは"Blend"というパラメータを変更することで行います。

animator.SetFloat("Blend", [0f-1f]);

アニメーションのあるオブジェクトに下記を張り付けて
moveSpeedスライダーバーを動かすとモーションが滑らかにブレンドします。

AnimationBrendTreeTest.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimationBrendTreeTest : MonoBehaviour
{
    [SerializeField,Range(0,1)] float m_moveSpeed=0f;
    Animator m_animator;

    // Start is called before the first frame update
    void Start()
    {
        m_animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        m_animator.SetFloat("Blend", m_moveSpeed);
    }
}

2つ以上のモーションブレンドも可能です