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) 收藏 举报



浙公网安备 33010602011771号