本文主要是介绍Unity(2022.3.41LTS) - 动画混合树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
零.简介
一、动画混合树的概念
二、动画混合树的类型
三、动画混合树的创建和编辑
1.创动画混合树建
2.编辑动画混合树
3.1D混合树
4.2D混合树
四、动画混合树的使用方法
1.关联动画混合树
2.控制混合参数
3.1D混合树使用
4.查看1D效果
5.2D混合树使用
6.2D混合树效果
五、动画混合树的优化和注意事项
零.简介
在 Unity 中,动画混合树(Animation Blending Tree)是一种强大的工具,用于创建自然流畅的动画过渡和混合效果。比如人物.从站立,到走路,到跑步.可以更简单更平缓的切换
一、动画混合树的概念
动画混合树是一种将多个动画片段组合在一起,根据特定的参数进行混合的技术。通过动画混合树,开发者可以实现从一个动画到另一个动画的平滑过渡,以及同时播放多个动画的混合效果。
例如,一个角色的行走动画可以根据角色的速度参数进行混合,当速度较慢时,播放正常的行走动画;当速度较快时,逐渐混合进入奔跑动画。这样可以使角色的动画更加自然流畅,避免了生硬的动画切换。
二、动画混合树的类型
-
1D 混合树
- 1D 混合树是最简单的动画混合树类型,它使用一个单一的参数来控制动画的混合。这个参数可以是任何数值类型,如整数、浮点数或布尔值。
- 例如,一个角色的行走动画混合树可以使用速度参数作为混合参数。当速度为 0 时,播放站立动画;当速度逐渐增加时,逐渐混合进入行走动画;当速度超过一定值时,混合进入奔跑动画。
-
2D 混合树
- 2D 混合树使用两个参数来控制动画的混合。这两个参数可以是任何数值类型,如整数、浮点数或布尔值。
- 例如,一个角色的行走动画混合树可以使用速度和方向两个参数作为混合参数。当速度为 0 时,播放站立动画;当速度逐渐增加时,根据方向参数逐渐混合进入不同方向的行走动画;当速度超过一定值时,混合进入奔跑动画。
-
直接混合树
- 直接混合树是一种特殊类型的动画混合树,它不使用参数来控制动画的混合,而是直接将多个动画片段混合在一起。
- 例如,一个角色的攻击动画混合树可以将不同类型的攻击动画直接混合在一起,根据随机数或其他逻辑选择播放不同的攻击动画。
三、动画混合树的创建和编辑
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.SetFloat
、Animator.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实现左边跑 , 右边跑
五、动画混合树的优化和注意事项
-
优化动画资源
- 动画混合树需要同时播放多个动画片段,因此会占用一定的内存和计算资源。为了提高性能,可以优化动画资源,减少动画片段的顶点数量和关键帧数量,以及使用动画压缩等技术。
-
避免过渡冲突
- 在动画混合树中,不同的动画片段之间可能会存在过渡冲突。为了避免过渡冲突,可以合理设置混合参数的范围和过渡条件,以及使用动画状态机的过渡优先级等功能。
-
测试和调试
- 在使用动画混合树时,需要进行充分的测试和调试,以确保动画的过渡和混合效果自然流畅。可以使用 Unity 的动画预览窗口和调试工具,以及在游戏中进行实际测试,来检查动画混合树的效果和性能。
动画混合树是 Unity 中一种非常强大的动画技术,可以实现自然流畅的动画过渡和混合效果。通过合理地创建和编辑动画混合树,以及控制混合参数的值,可以为游戏和动画项目带来更加生动和逼真的动画效果。
这篇关于Unity(2022.3.41LTS) - 动画混合树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!