当前位置:   article > 正文

【Unity动画】动画混合树(BlendTree)无缝过渡+两个动作同时播放_unity中blendtree使用

unity中blendtree使用

1.创建动画混合树片段 

混合树的级别和一个动画片段一样,只不过混合树里面包含了多个动作。

双击Blend Tree 进去混合树的编辑界面

 这里面可以添加很多个动作,然后选定一个之前设置好的任意一个参数作为控制变量

这个参数只能选用Float类型!我前面就定义了一个float类型的变量,叫run。因此它默认帮我选了run

2.使用动画混合树的原因:

当你有一套连续的动作,比如从走路、跑步、投射,他们可以用一个参数的变化来控制切换,并且实现非常自然的过渡。比如人物站立、小走、走路、快走和跑这几个动画,都有一个共同的变量-速度。那么我们可以用一个速度来控制不同的动画自动切换,虽然在状态机我们可以给多个片段设置触发参数来实现,但是,比如站立时速度=0,小走速度可以设置大于0小于2,正常走设置大于2小于5.。。。。。但是0 1 2这三个速度始终都是一个动作。

动画混合树的厉害之处就是,假如参数为0时,播放站立摆手打招呼

速度达到2播放走路动画

那么速度处于0-2之间的时候,他会把站立和走路的动画,混合到一起,就像两个图片半透明后融合在一起,类似图像混合模式,正片叠底、叠加等等!

Unity 混合树居然可以把两个动画混合到一起,参数为0-2 之间,就会一边站立摆手打招呼一遍走路动画。只不过两个动作各自取一般的速度

3.动画混合树参数的设置和理解

取消Automate Thresholds 美[ˈθrɛʃˌhoʊldz] 自动门槛设置

然后拖入对应的motion

设置每一个行为对应上面参数的门槛,也就是参数触发临界值

这里面依据的参数是run,这是我们在参数面板随便自定义的。所以说这个参数面板的参数是公用的。类似一个全局变量,过渡线可以使用,混合树也可以使用。代码控制方法也一样!

参数随便设置,但是跨度越大,动画过渡时间越长,越精细。剩下的就是我们在代码中实时控制run这个参数就可以了(例如 setFloat(“run”,0))

动画效果是跟随这个参数来变化,来融合的!

// 注意:以下示例代码是简化的,实际使用时需要根据项目需求进行调整和扩展。

  1. using UnityEngine;
  2. public class CharacterController : MonoBehaviour
  3. {
  4.     private Animator animator;
  5.     private float speed;
  6.     void Start()
  7.     {
  8.         animator = GetComponent<Animator>();
  9.     }
  10.     void Update()
  11.     {
  12.         // 获取输入或其他方式的速度值
  13.         speed = Mathf.Clamp01(Input.GetAxis("Vertical"));
  14.         // 更新Animator的Speed参数
  15.         animator.SetFloat("Speed", speed);
  16.         // 触发过渡条件
  17.         if (speed > 0.5f)
  18.         {
  19.             animator.SetBool("IsRunning", true);
  20.         }
  21.         else
  22.         {
  23.             animator.SetBool("IsRunning", false);
  24.         }
  25.     }
  26. }


```

动画融合是游戏开发中一个关键的技术,能够增强游戏角色的表现力和逼真感。在Unity中,动画混合树提供了一个强大而灵活的工具,通过合理使用Blend Trees和动画过渡,可以实现各种复杂的动画效果。通过深入了解这些技术,开发者能够在游戏中创造出更加生动、流畅的动画体验。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/678398
推荐阅读
相关标签
  

闽ICP备14008679号