Animation Notify
2020-03-22 本文已影响0人
托尼章
1 Animation Notifications
动画通知:为程序员提供了一种方式,以便在动画序列
的特定时间点上触发事件.动画通知
常用于在行走或跑步动画中添加脚步声之类的效果,或在动画中生成粒子系统.
不同类型的动画通知
会导致不同事件被触发.例如相机效果、粒子效果、音效均可借助动画通知
在动画序列
的任意时间点上触发.
1.1 添加Skeleton Notifies
- 在通知轨迹上单击右键,添加
骨架通知
.如下图所示:
SkeletonNotify - 在动画蓝图的事件图表中添加
骨架通知
对应的动画通知事件.
Event AnimNotify -
根据实际需求实现通知事件
Events
1.2 继承AnimNotify类
-
创建继承自AnimNotify的新的蓝图类
NewBPClass -
重载GetNotifyName与ReceivedNotify函数
OverrideFunctions
3.png
4.png - 在动画序列中添加新建的子类
6.png
8.png
注意:新添加的动画通知
在通知轨迹
上的显示名称就是我们在蓝图子类中重载的GetNotifyName函数的返回值.
1.3 其他预定义的AnimNotify类
- 布料模拟通知:PauseClothingSimulation,ResumeClothingSimulation,ResetClothingSimulation.
- PlayNiagaraParticleEffect(播放Niagara粒子特效)
- PlayParticleEffect(播放级联粒子特效)
- PlaySound(播放声音)
-
ResetDynamics(重设动力)
9.png
1.4 动画通知状态 AnimNotifyState
动画通知状态(通知状态)与上面的普通动画通知
类似.它拥有三个事件:NotifyBegin
,NotifyTick
,NotifyEnd
.在通知状态
开始与结束时分别触发NotifyBegin
与NotifyEnd
;在每次动画更新
时都会触发NotifyTick
事件,直到NotifyEnd
被触发为止.
使用通知状态
时需要注意的其他事项:
- 必定以
NotifyBegin
事件作为开始. - 必定以
NotifyEnd
事件作为结束. -
Tick
事件必定发生在NotifyBegin
与NotifyEnd
之间. - 不同动画通知(
AnimNotify
或AnimNotifyState
)之间的排序并非固定.如将两个AnimNotifyState
放置在一起,第一个结束之后第二个并不一定会开始.因此他们应该相互独立,不应该有相互依赖. - 支持动画倒放,但仍会首先调用
NotifyBegin
,最后调用NotifyEnd
.
1.4.1 创建自己的AnimNotifyState子类.
-
继承AnimNotifyState类,并重载NotifyBegin,NotifyTick,NotifyEnd等函数:
1.png
2.png - 在
动画序列
的通知轨迹
上添加新建的AnimNotifyState子类:
3.png -
调整AnimNotifyState的起始于结束位置:
4.png