目录
上一篇(组件5--Animation动画)已经做了2个动画片段,HeroIdle和HeroJump,另外实现了简单的动画转场控制。本篇使用BlendTree来控制动画转场,并使用事件发送的方式来控制动画事件。
应用1:使用BlendTree实现站立和移动
BlendTree用于对于两个或以上相似的动画混合(而不是过渡),比如人物在走路到达一定速度时与跑步的动画混合,或者在走动时同时向某个角度倾斜。
下面使用BlendTree实现一下组件5--Animation动画中的站立和移动:
1. 建立BlendTree:在状态机中点右键->CreateState->FromNewBlendTree

2. 添加动画:在BlendTree上点右键->AddMotion,就会在右边的Inspector中添加一个Motion,添加两个Motion后,就会出现两个动画重叠转换的权重。分别将两个动画片段拖入下面的Motion名字框。下面这个Automate不要勾选,就可以自己配置权重。同时在Animator中也会看到这些动画片段:

3. 脚本中添加动画事件:对于事件中心的修改,需要增加动画的事件类型、事件传输数据等。(关于事件中心,详见事件中心1等3篇)
(1)添加事件类型——在EventType.c中,在枚举数据中添加下面这个播放动画的代码:
OnPlayAnime=1005
(2)添加事件传输数据——在EventDataBase.cs中,添加发送动画事件时同时需要发送的参数:
public class EventDataAnime:EventDataBase
{
public EAnimeType animeType;
public float speed; //速度判断:站、走、跑
}
(3)添加播放动画类型——建立一个枚举类型(也可以直接写在EventDataBase.cs里面),添加要播放的几种动画:
public enum EAnimeType
{
Walk,Run,Jump,Idle,Fire
}
4. 添加动画播放事件。在挂载Animator组件的节点上(我这里直接挂在主角Hero身上),新建一个AnimePlay.cs脚本:
public class AnimePlay : MonoBehaviour
{//使用事件控制动画
private Animator animator;
void Start()
{
animator = GetComponent<

本文介绍了如何在Unity3D中使用BlendTree进行动画混合,以及通过事件驱动的方式控制人物的站立、移动、跳跃和开火动画。应用了站立和移动的BlendTree实现,包括创建BlendTree、添加动画和调整权重。同时,详细讲述了添加动画事件的步骤,如添加事件类型、传输数据,并编写脚本来监听和响应这些事件。此外,还展示了人物跳跃和开火动画的实现,包括设置跳跃力、触发跳跃事件以及在动画片段中监听事件来控制开火动作。
最低0.47元/天 解锁文章
888

被折叠的 条评论
为什么被折叠?



