赞
踩
混合树的级别和一个动画片段一样,只不过混合树里面包含了多个动作。
双击Blend Tree 进去混合树的编辑界面
这里面可以添加很多个动作,然后选定一个之前设置好的任意一个参数作为控制变量。
这个参数只能选用Float类型!我前面就定义了一个float类型的变量,叫run。因此它默认帮我选了run
当你有一套连续的动作,比如从走路、跑步、投射,他们可以用一个参数的变化来控制切换,并且实现非常自然的过渡。比如人物站立、小走、走路、快走和跑这几个动画,都有一个共同的变量-速度。那么我们可以用一个速度来控制不同的动画自动切换,虽然在状态机我们可以给多个片段设置触发参数来实现,但是,比如站立时速度=0,小走速度可以设置大于0小于2,正常走设置大于2小于5.。。。。。但是0 1 2这三个速度始终都是一个动作。
动画混合树的厉害之处就是,假如参数为0时,播放站立摆手打招呼
速度达到2播放走路动画
那么速度处于0-2之间的时候,他会把站立和走路的动画,混合到一起,就像两个图片半透明后融合在一起,类似图像混合模式,正片叠底、叠加等等!
Unity 混合树居然可以把两个动画混合到一起,参数为0-2 之间,就会一边站立摆手打招呼一遍走路动画。只不过两个动作各自取一般的速度
取消Automate Thresholds 美[ˈθrɛʃˌhoʊldz] 自动门槛设置
然后拖入对应的motion
设置每一个行为对应上面参数的门槛,也就是参数触发临界值
这里面依据的参数是run,这是我们在参数面板随便自定义的。所以说这个参数面板的参数是公用的。类似一个全局变量,过渡线可以使用,混合树也可以使用。代码控制方法也一样!
参数随便设置,但是跨度越大,动画过渡时间越长,越精细。剩下的就是我们在代码中实时控制run这个参数就可以了(例如 setFloat(“run”,0))
动画效果是跟随这个参数来变化,来融合的!
// 注意:以下示例代码是简化的,实际使用时需要根据项目需求进行调整和扩展。
- using UnityEngine;
-
- public class CharacterController : MonoBehaviour
- {
- private Animator animator;
- private float speed;
-
- void Start()
- {
- animator = GetComponent<Animator>();
- }
-
- void Update()
- {
- // 获取输入或其他方式的速度值
- speed = Mathf.Clamp01(Input.GetAxis("Vertical"));
-
- // 更新Animator的Speed参数
- animator.SetFloat("Speed", speed);
-
- // 触发过渡条件
- if (speed > 0.5f)
- {
- animator.SetBool("IsRunning", true);
- }
- else
- {
- animator.SetBool("IsRunning", false);
- }
- }
- }
```
动画融合是游戏开发中一个关键的技术,能够增强游戏角色的表现力和逼真感。在Unity中,动画混合树提供了一个强大而灵活的工具,通过合理使用Blend Trees和动画过渡,可以实现各种复杂的动画效果。通过深入了解这些技术,开发者能够在游戏中创造出更加生动、流畅的动画体验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。