学习位置
- B站位置:红豆丨泥 UE AI 教程
- 原作者Youtube位置:https://youtu.be/-t3PbGRazKg?si=RVoaBr4476k88gct
- 素材自备
提前将动画素材准备好
- 枪的武器插槽位置调整好
- 动画蓝图基本没什么变化
准备武器
- 在AI的接口蓝图中添加两个函数一个是装备武器一个是卸载武器
- 替换之前的事件
- 将之前的两个事件分发器换一下名字
- 行为树的任务也是
- 注意之前装备斧头与卸载斧头的任务需要更新
- 这两个名字也改一下
- 将之前的斧头蓝图作为基类,派生出两把武器
- 将之前的拿斧头的蓝图AI作为基类派生出两个敌人一个拿枪的一个拿斧头的
- 在AI接口中创建一个攻击函数,替换掉之前的攻击事件
- 注意之前改错了名字,所以注意行为树的逻辑变化
行为树嵌套子树
- 将一下通用被动的行为可以封装成一个行为树,然后在总的行为树中去调用这个子行为树
- 例如这个侦察点巡逻,可以封装为一个行为树
- 新建一个行为树用来单独走这个再侦察点巡逻任务
- 绕样条线巡逻这段行为也可以封装为一个行为树
区分近战与远程行为树
复制基类行为树,作为近战AI行为树
- 近战行为树不做任何改变
- 修改基类AI行为树
- 复制这个基类行为树,作为远程AI的行为树
通过敌人类型运行不同行为树
- 在敌人基类里面添加一个行为树变量
- 分别在远程AI与近战AI的行为树变量设置相应的行为树
- AI控制器中进行分区不同类型AI用不同类型行为树
- 运行结果,确实区分开了行为树
实现远程AI受击后会躲起来
- AI受到攻击后会躲避玩家视线进行恢复,然后再次出现攻击玩家
设置远程AI基本属性
- 实现一下远程AI的设置移动速度接口,相比于近战攻击AI,远程AI移动速度快一点
- 设置一下远程AI的攻击范围
AI的攻击行为与EQS查询
- 新建一个EQS查询,使用查询参数这样就可以将这个网格范围与我们的黑板老板键进行关联
- 添加一个路径测试去除掉不能达到的点
- 添加一个追踪测试,过滤到在玩家视线中看不到的点
- 添加一个距离测试以玩家为目标,这样就看到距离玩家最远的点了
- 在添加一个距离测试,过滤掉AI可以移动300的范围内的点,这样就减少AI的这个范围一直移动
- 场景中的测试结果,这里是网格生成没有用关联值才能看得到的,记得不测试的时候就换回查询参数
- 行为树逻辑,这里与网格范围变量关联的是我们的攻击范围,也就是说这个EQS的会跟据我们的攻击范围去生成EQS范围大小
- 记得连线玩家进行测试
- 注意别忘记给追踪测试加一个高度,这样就可以让这个测试看到的高度来进行查询
- 重写一下远程AI的攻击接口
离开AI视线进行查找玩家
- 添加一个装饰器进行检查当前玩家是否在AI的视线中
- 远程AI行为树逻辑,当我们不在AI视线里的时候,AI会去寻找攻击我们的最佳点,观察器中止为Both,只当AI完全看不到玩家的时候才会去执行旁边的
MoveToLineOfSight
添加健康系统
- 新建三个变量,设置相应的默认值
- 在玩家蓝图给伤害感官通知那进行伤害传递
- 基类敌人中应用伤害
- 新建两个接口涌来获取最大血量与当前血量
- 实现接口
攻击AI,AI知道躲避进行回血
- 添加一个装饰器用来判断当前血量是否小于一个阈值
- 添加一个回复血量的接口函数
- 在基类敌人中去实现这个函数接口
- 新建一个任务用来恢复血量
- 行为树逻辑