【谌嘉诚】UE4基础教程学习笔记-AI部分+动画部分
27.AI部分:
(1)导航网格:体积-导航网格体边界体积,即AI的活动范围。
项目设置-导航网格体-运行时生成-把静态改为动态,这样ai就是实时检测到是否有阻挡,但是性能开销会变大。
(2)AI移动:创建自定义事件,AI移动:所用蓝图节点,AI Move To,get random获取可导航半径内的随机点。
以事件设置定时器:重复事件。

(3)AI行为树实现随机和跟随移动:(与(2)中蓝图控制AI不同)
黑板:变量集合;行为树:逻辑集合。黑板相当于大脑,行为树的根就是黑板
在ai行为树中新建任务,选择函数-重载选择-接收执行AI
总体逻辑:在AI蓝图中选择刚刚建好的AI控制器,在AI控制器中运行行为树,
(4)寻找玩家与随机找点,为了避免我们稍微离开视线AI就离开了,我们可以设置焦距,让AI视线追随我们,需要把AI蓝图中的使用控制器旋转Yaw打开,角色移动中的-将旋转朝向运动关闭,寻找玩家与随机找点两种情况的蓝图如下:


到此AI生成树,Ai追踪玩家完成。
(5)AI靠近玩家挥拳:给AI添加球形碰撞盒子用于碰到玩家时执行挥拳动画
以事件设置定时器来反复播放挥拳蒙太奇动画:

在挥拳蒙太奇动画中添加一个slot插槽节点,作用是作为一个标签去告诉系统寻找用的是什么montage动画

ai挥拳时会阻挡摄像机,所以将ai碰撞预设改为自定义custom,取消camera的碰撞,如下:

(6)AI跟随样条移动:
①创建Spline蓝图,添加样条组件,即可关闭
将Spline拖入场景,ALT拖拽方向即可生成下一个点
②在行为树新建任务:根据Spline随机找点:从接收执行Ai开始编写蓝图


运行时AI视角问题:AI根据样条线移动的时候,寻找玩家蓝图就不设置焦距了,不然AI又要看着玩家,又要看着样条线的点,就会疯狂鬼畜转动,基本上是这个逻辑,注意:这个时候记得把AI的转动功能打开,根据控制器旋转Yaw关闭,不然AI转动会很生硬,不过AI也会卡顿,因为很容易脱离视角,AI就会自动去样条点,根据实际情况来使用。
!!!对前面所学类型转换为的补充:类型转换是为了保证只有碰到当前转换的类型才会响应之后的逻辑
28.动画部分:
(1)导入:先导入人物,再导入动画
创建角色蓝图,放入摄像机和弹簧臂组件,调整位置(第三人称)
选择弹簧臂,打开使用pawn控制旋转,关闭类默认值中的使用控制器选择Yaw

(实现多角度观看角色)
接着:
给角色写上移动,镜头水平旋转,上下旋转(基本完成)
运行时角色头发异常闪动:在项目设置中关闭动态模糊
(2)混合空间1D:在水平坐标设置速度大小,调整采样插值是的不同速度的


动画切换有个过渡
(3)动画蓝图:创建动画蓝图,创建状态机-在状态机中添加混合空间1D,注意:混合空间1D需要传入具体的数值才可以去播放对应的动画
所以先添加一个变量给1D

接着在动画蓝图时间图表中实时获取角色的速度,赋值给变量即可

(4)蒙太奇播放:创建好蒙太奇动画后可以在其上添加自己想要的插槽名字,接着在动画蓝图状态机中间添加插槽,插槽的名字选择自己刚刚创建的名字
最后:在角色蓝图写自己想要的蒙太奇动画播放逻辑,如下:


注意:播放和停止蒙太奇动画有两种节点,其中一种需要获取动画实例,根据实际情况来自己选择用哪一种