Unity(2022.3.41LTS) - 动画混合树

目录

零.简介

一、动画混合树的概念

二、动画混合树的类型

三、动画混合树的创建和编辑

1.创动画混合树建

2.编辑动画混合树

3.1D混合树

4.2D混合树

四、动画混合树的使用方法

1.关联动画混合树

2.控制混合参数

3.1D混合树使用

4.查看1D效果

5.2D混合树使用

6.2D混合树效果

五、动画混合树的优化和注意事项



零.简介

在 Unity 中,动画混合树(Animation Blending Tree)是一种强大的工具,用于创建自然流畅的动画过渡和混合效果。比如人物.从站立,到走路,到跑步.可以更简单更平缓的切换

一、动画混合树的概念

动画混合树是一种将多个动画片段组合在一起,根据特定的参数进行混合的技术。通过动画混合树,开发者可以实现从一个动画到另一个动画的平滑过渡,以及同时播放多个动画的混合效果。

例如,一个角色的行走动画可以根据角色的速度参数进行混合,当速度较慢时,播放正常的行走动画;当速度较快时,逐渐混合进入奔跑动画。这样可以使角色的动画更加自然流畅,避免了生硬的动画切换。

二、动画混合树的类型

  1. 1D 混合树

    • 1D 混合树是最简单的动画混合树类型,它使用一个单一的参数来控制动画的混合。这个参数可以是任何数值类型,如整数、浮点数或布尔值。
    • 例如,一个角色的行走动画混合树可以使用速度参数作为混合参数。当速度为 0 时,播放站立动画;当速度逐渐增加时,逐渐混合进入行走动画;当速度超过一定值时,混合进入奔跑动画。
  2. 2D 混合树

    • 2D 混合树使用两个参数来控制动画的混合。这两个参数可以是任何数值类型,如整数、浮点数或布尔值。
    • 例如,一个角色的行走动画混合树可以使用速度和方向两个参数作为混合参数。当速度为 0 时,播放站立动画;当速度逐渐增加时,根据方向参数逐渐混合进入不同方向的行走动画;当速度超过一定值时,混合进入奔跑动画。
  3. 直接混合树

    • 直接混合树是一种特殊类型的动画混合树,它不使用参数来控制动画的混合,而是直接将多个动画片段混合在一起。
    • 例如,一个角色的攻击动画混合树可以将不同类型的攻击动画直接混合在一起,根据随机数或其他逻辑选择播放不同的攻击动画。

三、动画混合树的创建和编辑

1.创动画混合树建

  • 在 Unity 中,可以通过以下步骤创建动画混合树:
    • 在项目窗口中,右键点击并选择 “Create> Animator Controller” 创建一个动画控制器。
    • 在动画控制器编辑器中,右键点击空白处并选择 “Create State> From New Blend Tree” 创建一个动画混合树状态。
    • 给动画混合树状态命名,并双击进入动画混合树编辑器。

2.编辑动画混合树

  • 在动画混合树编辑器中,可以进行以下操作:
    • 添加动画片段:将需要混合的动画片段拖放到动画混合树编辑器中。
    • 设置混合参数:根据动画混合树的类型,设置一个或两个混合参数。可以在动画控制器编辑器中定义这些参数,并在脚本中控制它们的值。
    • 调整混合权重:通过拖动动画片段的节点,可以调整每个动画片段在混合中的权重。权重越高,该动画片段在混合中的贡献越大。
    • 预览动画混合效果:在动画混合树编辑器中,可以点击 “Preview” 按钮预览动画混合效果。可以通过调整混合参数的值来观察动画的过渡和混合效果。
    • 要是返回上一页,点击这里

3.1D混合树

右键添加运动

创建三个 分别加入 等待,走路,跑步动画

拖动条件可以看到人物动画的变化

4.2D混合树

再来创建一个混合树

右键点击Entry状态,可以选择后面跟的初始状态

点击树,选择2D SimpleDirectional.

创建两个参数.在选择两个变量.

这是两个变量的位置,越靠近动作就会变成这个点的动作,

四、动画混合树的使用方法

1.关联动画混合树

将创建好的动画混合树状态关联到角色或物体的 Animator 组件上。在 Inspector 窗口中,选择角色或物体,然后将动画控制器拖放到 Animator 组件的 “Controller” 属性中。

2.控制混合参数

通过脚本或其他方式控制动画混合树的混合参数的值。可以在脚本中获取 Animator 组件,并使用 Animator.SetFloatAnimator.SetInteger 等方法来设置混合参数的值。

3.1D混合树使用

创建一个SpeedTree的参数,并设置到树的条件上.

        // 获取输入控制速度
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");
        speed = Mathf.Clamp01(Mathf.Sqrt(horizontalInput * horizontalInput + verticalInput * verticalInput));

        // 设置动画参数
        animator.SetFloat("SpeedTree", speed);

4.查看1D效果

按下W,和松开的效果.会看到这三个动画切换起来很丝滑,至于这个gif有点卡是因为录制的时候fps调的低.

5.2D混合树使用

        if (Input.GetKeyDown(KeyCode.A))
        {
            // 设置动画参数
            animator.SetFloat("left", -0.948f);
            animator.SetFloat("right", 0f);
        }

        if (Input.GetKeyDown(KeyCode.D))
        {
            // 设置动画参数
            animator.SetFloat("left", 0f);
            animator.SetFloat("right", -0.694f);
        }

6.2D混合树效果

分别按下A和D实现左边跑 , 右边跑

五、动画混合树的优化和注意事项

  1. 优化动画资源

    • 动画混合树需要同时播放多个动画片段,因此会占用一定的内存和计算资源。为了提高性能,可以优化动画资源,减少动画片段的顶点数量和关键帧数量,以及使用动画压缩等技术。
  2. 避免过渡冲突

    • 在动画混合树中,不同的动画片段之间可能会存在过渡冲突。为了避免过渡冲突,可以合理设置混合参数的范围和过渡条件,以及使用动画状态机的过渡优先级等功能。
  3. 测试和调试

    • 在使用动画混合树时,需要进行充分的测试和调试,以确保动画的过渡和混合效果自然流畅。可以使用 Unity 的动画预览窗口和调试工具,以及在游戏中进行实际测试,来检查动画混合树的效果和性能。

动画混合树是 Unity 中一种非常强大的动画技术,可以实现自然流畅的动画过渡和混合效果。通过合理地创建和编辑动画混合树,以及控制混合参数的值,可以为游戏和动画项目带来更加生动和逼真的动画效果。

Unity 2022.3引入了一些新的导航功能,以帮助开发者更方便地为游戏添加导航系统。新版本中的导航系统改进了性能和功能,使其更加强大和灵活。 首先,Unity 2022.3引入了实时路径搜索功能。该功能可以根据场景中的物体位置和碰撞体等信息,在实时场景中进行路径搜索。这意味着开发者可以在游戏运行时动态计算角色或其他游戏实体的路径。这一功能对于实时策略游戏或动态变化的游戏环境非常有用。 其次,新版本的导航系统还改进了自动化的对话框生成功能。开发者可以通过简单的设置,自动生成适应场景的对话框来实现导航指示。这个功能可以大大减轻开发者的负担,并提高游戏中导航的质量。 此外,Unity 2022.3还提供了更多的导航算法选项。不同的游戏场景可能需要不同的导航算法来平衡效率和精度。新版本中的导航系统提供了多种算法选项,让开发者能够根据具体需求选择合适的算法。 最后,Unity 2022.3导航系统的改进还包括了对2D游戏的支持。早期的导航系统主要面向3D游戏,但新版本中加入了对2D游戏的导航支持。这使得开发者能够更方便地为2D游戏创建导航系统,为玩家提供更好的游戏体验。 总的来说,Unity 2022.3版本的导航系统带来了更多强大和灵活的功能,包括实时路径搜索、自动对话框生成、多种导航算法选项以及对2D游戏的支持。这些新功能使得开发者在为游戏添加导航系统时更加便捷,为玩家提供更好的游戏体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一然明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值