1. 动画通知
通知有Notify和Notify State两种,这和UI动画的Trigger和Repeater类似,Notify是一瞬间发出的,而Notify State会持续一段时间。
同时Notify又可分为Skeleton Notify、AnimNotify、原生方法,三种实现方式。
(1)Skeleton Notify是一个纯粹的事件,在动画蓝图中可以拿到。
注意:Skeleton Notify特殊的,不能复用,只是针对于这一种动画蓝图,不同的动画蓝图无法共享。
(2)创建AnimNotify蓝图类,通过重载方法来编写逻辑,并且这种方式可以达到复用的目的。
2. 根运动
根运动是指动画来控制角色骨架的运动,普通运动就算运动朝前翻滚,骨架的根节点也一直是在原地的。根运动可以在动画属性中开启。
注意:根运动一般是在播放蒙太奇的时候才使用。
3. 状态机与过渡规则
状态机是用来控制在什么样的条件下,人物应该进入什么状态,播放什么动画的一个东西。
过渡规则是控制状态机执行的条件,当中有多个属性我们可以进行设置,我们依次进行介绍。
(1)Transition栏
Blend Logic:Standard Blend(达成过渡规则时,在一个状态播放完后,才进入过渡规则的状态),Inertialization(惯性化,需要在动画蓝图中添加Inertialization节点,可以直接过渡,不用等上一个播放完毕)。
Transition Rule Sharing:可点击Promote To Shared,创建一个共享,同时规则会变成橘黄色,其它的过渡规则可以设置此共享,就可以做到设置一致,不用重新设置。
Automatic Rule Based on Sequence Player in State:勾选后,在状态播放完后会自动播放下一个状态,实现与下图的逻辑等同。
(2)Blend Settings栏
Duration:切换的时间,如果不为0,就会对两个状态的动画进行混合。
Mode:过渡时,使用的过渡函数,使用CPU直接计算。
Custom Blend Curve:和Mode一样,需要在Mode栏选择Custom,才能使用这个曲线,过渡时,使用自定义曲线,使用内存去读曲线。
Blend Profile:混合配置,我们可以去配置每个骨骼的混合权重,我们可以在骨架界面去配置此项。
Transition Crossfade Sharing:共享,但是不能同步设置Blend Profile项。
注意:上图中的骨骼权重值不能为0,因为源码的计算是1/权重值,如果为0就崩溃了。
(3)Notifications栏
Notifications中的事件,和在动画中的骨骼通知一样,本质就是个事件,我们填入自定义的事件名字,我们就能在动画蓝图中调用该事件。
注意:要使用此自定义通知事件,包含该事件的状态机一定要连接进去,不然没有该事件。
4. 管道
管道是一个特殊的状态,执行它不需要时间,只会包含一个判断条件。
管道的作用:在于多增加了一次判断,可以进行状态的二次控制。
5. 保存姿势
保存姿势,相当于对姿势的缓存,先把该状态姿势进行保存,然后在不同的状态机中去修改不同的属性,达到保存原有姿势的作用。用New Save cached pose…对姿势进行保存,用Use cached pose “XXX”对保存的姿势进行提取。
6. 动画层与动画接口
(1)动画层
动画层类似于动画中的函数,可以极大的简化逻辑和提高封装。
使用Linked Anim Layer: XXX来使用自己创建的动画层。
(2)动画层接口
动画层接口类似于函数接口。
我们就能在动画蓝图的设置中找到我们创建的动画层接口。
添加后自动出现接口中的函数。
(3)动画层接口不同实现的关联使用
因为是接口的原因,如果有两个动画蓝图类继承自同一个动画层接口,但是其各自的动画层实现不一样,我们可以通过人物Mesh的Link Anim Class Layers对该动画蓝图类的动画层各自不同的实现进行切换。
注意:动画层可以用来处理交互逻辑,不用写两套逻辑,在不同动画蓝图中,使用不同的动画层接口的实现,直接切换动画蓝图就可以。
7. 动画修改器
动画修改器中包含两个重载函数,恢复时和应用时。
动画修改器的使用如下
注意:动画修改器相当于一个Editor Utility,只是帮助你去修改编辑动画里的曲线、骨骼位置等东西。
8. 摄像机震动
摄像机的震动我们选择使用Client Start Camera Shake函数和MatineeCameraShake蓝图类来实现。
使用创建动画通知类(AnimNotify)的方式调用这个方法,将创建的MatineeCameraShake类配置进去,即可在跑步动画中使用摄像机震动。