AimOffset是动画叠加(偏移)
AimOffset简单说就是叠加动作,如射击游戏中敌人射击时,根据人物位置不同造成的身体旋转角度的不同。
1.创建AimOffset 文件夹空白处右键选择Animation下的目标偏移(AimOffset),并选择对应的骨骼进行创建
2.参数设置
水平坐标指的是动画融合框中X轴的值范围
垂直坐标指的是动画融合框中Y轴的值范围
注:根据需求设置不同的值,这些值可以控制模型动画的动作(这里设置为 -90 90 的范围)
要声明Name 名称 (在动画蓝图中进行赋值时的名称参数)以及取值范围 也可以设置将融合框的轴 分为几个区域 可以存放不同的动画
插值类型以及插值时间 暂无涉及 此处选择默认即可
3.设置需要融合的动画
在资源浏览器中选择要融合的动画,双击打开其中一个。(以AimOffsetDown为例,这是动画中的一帧)
在资源详情中,设置Additive Settings ,将Additive Anim Type 设置为Mesh Space , Base Pose Type 设置为 Selected animation(将动画的一帧用作一个基础姿势) 参考动画 设置为基础动画此处选择Idle(在AimOffset设置混合空间中的基础动画也选择Idle)
MeshSpace:网格体空间是一种略有不同的提取附加动画的差量的方法,因为它只用于特定的实例,如瞄准偏移资源。网格体空间使用网格体的边界框作为其旋转的基础,允许向相同的方向旋转,而不管骨架网格体中骨骼链的方向如何。考虑这样一个角色,身体向一侧倾斜,但需要将手枪向上瞄准。如果向上的瞄准运动是在局部空间内,那么瞄准就会向外旋转,向着倾斜的方向。
示例:
如果要设置的动画较多,挨个设置操作不方便可以,选中动画右键浏览至资源,选中所有需要设置的动画,右键选择资源操作 通过属性矩阵进行批量修改,将Additive Setting 选项中的参数全部更该为上面的值
选择基础动画,点击右侧的九宫格选项进行动作设置。
一定要记得设置完成后返回文件夹下保存所有修改,如果不保存会导致无法将帧动画拖入到融合框中的情况。
4.设置AimOffset 融合框中的动画,打开AimOffset
在资源详情Additive Setting 设置基础动画姿势为Idle
根据动画方向设置位置,设置完成后保存。
注:设置融合框动画,设置动作左右的时候要注意是设置我们面对电脑方向的左右(按照自己的左右)来设置人物的动作朝向,在融合框中按住Shift并移动鼠标就可以查看融合动画效果。
5.将上面制作的目标偏移拖拽到动画蓝图中,可以在动画蓝图的动画图表中右键搜索创建的AimOffset创建目标偏移,也可以在资源浏览器中找到对应的目标偏移直接拖拽到动画图表中
6.与状态机连接,编写给水平偏移 及 垂直偏移传递参数的方法 (如果关闭了动画蓝图多线程的限制,此处可以使用纯虚函数进行值的获取及传递,如果没有关闭多线程限制,则需要在事件图表中编辑逻辑,将获取到的值提升为变量,在动画图表中获取并连接值即可)
7.敌人AI 向自己射击时,获取的水平及垂直方向的值
通过敌人及主角两个位置点,获取到射击朝向,再获取到敌人自身的朝向,此时只需要获取到射击朝向与自身朝向之间的差值(要转换成同一种格式,要么四元数,要么Vector3 ,相减),然后获取到的变量通过Break Rotator 节点,转换为Roll Pitch Yaw 水平方向获取Z轴得值,垂直方向获取Y轴的值即可。