UnityVR--组件7--动画事件&BlendTree

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

目录

应用1:使用BlendTree实现站立和移动

应用2:人物跳跃事件&播放跳跃动画

应用3:开火动画事件&动画片段中建立事件监听


  上一篇(组件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<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值