Unity Animator 之 多个动画任意自由切换实现

2025-11-08 17:27:28

1、打开Unity,新建一个空工程,具体如下图

Unity Animator 之 多个动画任意自由切换实现

2、在工程中带入一个带多动画的模型,方便后期控制,具体如下图

Unity Animator 之 多个动画任意自由切换实现

3、在工程中新建一个 Animator,可以命名为 “Che”,具体如下图

Unity Animator 之 多个动画任意自由切换实现

4、在 Animator 窗口下,添加对应动画,设置一个默认动画,要随意自由切换的动画在 AnyState下引线切换并添加一个 Int 参数控制切换动画,具体如下图

Unity Animator 之 多个动画任意自由切换实现

Unity Animator 之 多个动画任意自由切换实现

5、对每条引线设置,对应控制 Int 参数见图,按需取消每个动画的退出时间,设置中断方式,收回当前动画切换到下一个动画,取消自己触发自己的设置,其他一次类似设置即可,具体如下图

Unity Animator 之 多个动画任意自由切换实现

6、在工程中 新建一个脚本 “CheAnimatorController”,双击进行脚本编辑,具体如下图

Unity Animator 之 多个动画任意自由切换实现

7、“CheAnimatorController”脚本的具体代码和代码说明如下图

Unity Animator 之 多个动画任意自由切换实现

Unity Animator 之 多个动画任意自由切换实现

8、“CheAnimatorController”脚本的具体内容如下:

using UnityEngine;

public class CheAnimatorController : MonoBehaviour {

    public Animator ani;        // 设置 Animator 参数,获取 Animator

    private void Update()

    {

        // 按下不同键触发不同动画

        if (Input.GetKeyDown(KeyCode.Alpha0))

        {

            SetCarIdle();

        }

        if (Input.GetKeyDown(KeyCode.Alpha1)) {

            SetCarExplosive();

        }

        if (Input.GetKeyDown(KeyCode.Alpha2))

        {

            SetCarDoorOpen();

        }

        if (Input.GetKeyDown(KeyCode.Alpha3))

        {

            SetCarTrunckMove();

        }

        if (Input.GetKeyDown(KeyCode.Alpha4))

        {

            SetCarHoodOpen();

        }

    }

    /// <summary>

    /// 设置 车 的状态为 Idle

    /// </summary>

    private void SetCarIdle()

    {

        ani.SetInteger("Animation_Int", 0);

    }

    /// <summary>

    /// 设置 车 的状态为 Explosive

    /// </summary>

    private void SetCarExplosive() {

        ani.SetInteger("Animation_Int", 1);

    }

    /// <summary>

    /// 设置 车 的状态为 DoorOpen

    /// </summary>

    private void SetCarDoorOpen()

    {

        ani.SetInteger("Animation_Int", 2);

    }

    /// <summary>

    /// 设置 车 的状态为 TrunckMove

    /// </summary>

    private void SetCarTrunckMove()

    {

        ani.SetInteger("Animation_Int", 3);

    }

    /// <summary>

    /// 设置 车 的状态为 HoodOpen

    /// </summary>

    private void SetCarHoodOpen()

    {

        ani.SetInteger("Animation_Int", 4);

    }

}

9、脚本编译正确,回到unity,把脚本挂载到 Che 上,并对应赋值,具体如下图

Unity Animator 之 多个动画任意自由切换实现

10、运行场景,分别 按下 1,2,3,4,0 ,即可看到 che 的动画自由切换了,具体图下图

Unity Animator 之 多个动画任意自由切换实现

Unity Animator 之 多个动画任意自由切换实现

11、具体动画效果,如下图

Unity Animator 之 多个动画任意自由切换实现

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢