UE4动画系统:什么是动画通知状态

什么是动画通知状态(Anim Notify State)

先说说名字,动画通知状态听起来好像是一种状态,但实际上也是一种动画通知,所以,老王觉得翻译成“动画状态通知”也许更恰当。

如果你理解了老王前面介绍过的动画通知(见《UE4动画系统:什么是动画通知(Anim Notify)》),那么动画通知状态也不难理解了。二者都是动画调用游戏逻辑的机制,动画通知对应动画时间轴上的一个时间点,而动画通知状态对应动画时间轴上的一个时间段。

使用情景

图片来源:网页游戏http://www.laoshoucun.com/网页游戏排行榜
举个格斗游戏的例子吧,假设我们用一个动画序列表现角色的酷炫超必杀,而角色做这个超必杀时,其攻击力和防御力被设计为以某种曲线波动。

在整个释放必杀技的过程中甚至还有防御力为零的时刻(这种设计可以让水平高的玩家在最危险的时刻抓住机会反击,提高游戏的刺激感)。要满足这种需求,使用动画通知状态会是一个不错的选择。

动画通知状态的使用方法

动画通知状态,无法像动画通知那样直接在动画时间轴上创建

那咱们就派生一个AnimNotifyState

定义动画状态通知


可以override的4个方法

  和动画通知相比,多了Received Notify Begin、Received Notify End以及Received Notify Tick三个方法正好对应着状态机中每个状态的常用方法

  GetNotifyName:定义了这个动画通知状态在时间轴上显示的名称。和之前的动画通知一样。

  本例中我把显示名设为"My Notify State"


Received Notify Begin:开始播放这个时间段(上面说过,动画通知状态对应的是时间段)的动画时就会触发这个事件。

  • Mesh Comp网格组件对象
  • Animation动画实例对象
  • Total Duration:时间段的总时长

    Received Notify End:结束播放这个时间段的动画时就会触发这个事件。
  • Mesh Comp网格组件对象
  • Animation动画实例对象

    Received Notify Tick:播放这个时间段的动画时每一帧都会触发这个事件
  • Mesh Comp:网格组件对象
  • Animation:动画实例对象
  • Frame Delta Time:与上一帧的间隔时间

    绑定(注册)动画通知状态

接下来我们就可以在动画时间轴上添加刚定义的动画通知状态,然后我们不仅可以调整它的位置,还可以调整它的长度。之前说过,动画通知状态对应的是时间段嘛。

posted on 2020-12-29 14:03  laoshoucun  阅读(634)  评论(0)    收藏  举报

导航