当前课程知识点:虚幻引擎(UE4)技术基础 > 第十一章 游戏AI > 11.4 AI生成点与随机巡逻 > 11.4 AI生成点与随机巡逻
大家好
欢迎来到虚幻引擎技术基础课堂
我是主讲教师 黄颖翠
现在我们将在虚幻引擎技术基础课程中
游戏AI章节
学习实现AI生成点与随机巡逻
在我们上节课中
可以实现一个敌人的AI决策
但是一个游戏不可能只有一个敌人
并且往往是无限个敌人
同时敌人的位置
也是多处出现的
我们这节课将学习
如何在游戏世界产生新的敌人
也就是我们开发中
常说的敌人生成点
同时我们还要学习
如何设置敌人AI在关卡中的随机巡逻逻辑
好
开始操作部分
现在我们一起实际操作一下
实现我们这节课需要达到效果
我们先实现生成点
如何生成敌人呢
我们可以用原来的巡逻点
point1
改名SpawnPoint
用它来做生成点
这样我们就不用新建一个actor了
我们给它放好一个合适的位置
然后把它的球状碰撞体删除
然后如何生成敌人呢
我们可以在蓝图这里
找到打开关卡蓝图
把逻辑添加到这里
我们决定每隔一段时间
在某个位置生成敌人
所以需要创建变量相隔时间
SpawnTime 浮点型
5秒
然后还有一个
最多有多少敌人
MaxEnemyNum
整数
5个人吧
我们可以添加BeginPlay事件
间隔5秒触发一个自定义事件Spawn
这个Spawn逻辑就是生成敌人
我们可以先判断当前有多少敌人
满足条件才生成敌人
否则世界上敌人太多了
我们在玩家蓝图中
创建一个当前敌人数量变量
CurrentEnemyNum
整数类型
然后回到关卡蓝图中
使用这个变量
我们先获取玩家角色
然后尝试转换类型为
FirstersonCharacter
如果转换成功说明是玩家
获取玩家身上的当前场景敌人数量
CurrentEnemyNum
判断是否小于MaxEnemyNum
最多玩家数量
如果小于
则说明敌人还不够
我们去生成AI
Spawn AI from class
位置就是刚刚我们设置的生成点
但是它是世界中的一个物体
我们应该怎么获取他呢
我们先选中这个点
然后在蓝图里面空白处右击
这时候就有了它的引用
然后我们获取他的位置
Get Actor Location
然后人生成之后面向哪里
我们想他有一点随机性
我们就构造一个随机旋转
Make rotate
我们看一下
拖入一个人物
这个人物是延Z轴旋转的
所以我们给这个z一个随机数
因为z这个值是0
到360
我们给它赋一个随机数
random float
然后乘以一个360
最后赋值给Y
在后面添加一个IsValid
判断是否执行有效
如果真则当前敌人数
CurrentEnemyNum加1
我们修改下需要击杀的数量
从2改成6
当然我们还要考虑击杀一个
就应该把当前敌人数减一
在敌人控制器中
在击中事件里面
我们从玩家身上获取敌人数量
然后-1赋值回CurrentEnemyNum
运行一下
运行后会报错
可能是一些释放的问题
敌人死亡后黑板已经被释放
但是依然被调用了
那就是敌人控制器这里
在每个获取黑板这里添加一个isvalid
检查一下黑板是否ok
没有问题才设置
好
再次测试
没有问题了
任务完成
那么第二个任务随机巡逻怎么实现
首先原来的巡逻点可以不需要了
我们再把原来行为树里面的
定点巡逻逻辑删除
然后在敌人蓝图里面的巡逻
有关的也删除调用
我们给他创建一个随机巡逻点
我们在行为树这里创建一个Wander
然后
移动
巡逻点先空着
还有一个等待wait
两秒
加减1秒
那巡逻到哪个点呢
我们到黑板里面新建一个键值
WanderPoint
这个就是需要移动到的巡逻点
在行为树这里选择一下
我们还需要生成一个新的任务
来做巡逻这个事情
名字改成FindWanderTask
然后我们在行为树上用上它
怎么找巡逻点呢
我们打开这个新任务编辑
先添加接收任务和结束任务
首先我们需要找到自己的位置
先转换类型为AIController
AI控制器
然后通过Nav网格获取位置
然后在圆点给定半径中生成一个随机位置
范围是一万
然后在这个随机的位置就是需要巡逻的点
把这个值传给黑板
设置给黑板的value
而key我们创建一个变量key对应
键值是黑板键值
打开眼睛
方便外部设置
然后连接剩下的线
成功一定要勾选上
Key值就在外面行为树上
设置成WanderPoint巡逻点
这节课我们实现了场景中
最多有五个敌人
敌人生成后随机方向
巡逻点是随机的
攻击完6个人后显示胜利界面
本小节的操作讲解已经完成
留给大家一个一个课后练习
请大家课后完成我们讲到的操作
并完善游戏的生成点和巡逻轨迹
使该游戏更具趣味性
好
本节课内容就讲解完毕
感谢大家聆听
再见
-1.1 虚幻4引擎简介
--1.1 小节习题
-1.2 虚幻4引擎的安装及环境部署
--1.2 小节习题
-1.3 创建项目及试玩
--1.3 小节习题
-第一章 章节测试
-2.1 虚幻4编辑界面介绍01
--2.1 小节习题
-2.2 虚幻4编辑界面介绍02
--2.2 小节习题
-2.3 视口导航及基本操作
--2.3 小节习题
-2.4 导入资源、项目迁移和管理
--2.4 小节习题
-第二章 章节测试
-3.1 地形工具
--3.1 地形工具
--3.1 小节习题
-3.2 新建地形
--3.2 新建地形
--3.2 小节习题
-3.3 塑造地形
--3.3 塑造地形
--3.3 小节习题
-3.4 使用植被工具
--3.4 小节习题
-第三章 章节测试
-4.1 初识材质
--4.1 初识材质
--4.1 小节习题
-4.2 编辑基于物理材质
--4.2 小节习题
-4.3 使用贴图纹理创建材质
--4.3 小节习题
-第四章 章节测试
-5.1 大气照明和定向照明
--5.1 小节习题
-5.2 添加点光源
--5.2 小节习题
-5.3 添加聚光源
--5.3 小节习题
-5.4 光源质量和反射
--5.4 小节习题
-第五章 章节测试
-6.1 几何体及纹理贴导入
--6.1 小节习题
-6.2 素材整理和项目准备
--6.2 小节习题
-6.3 搭建流程
--6.3 搭建流程
--6.3 小节习题
-第六章 章节测试
-7.1 动画资源与编辑器
--7.1 小节习题
-7.2 混合空间
--7.2 混合空间
--7.2 小节习题
-7.3 动画窗口及编辑动画
--7.3 小节习题
-7.4 创建自定义角色
--7.4 小节习题
-第七章 章节测试
-8.1 创建粒子系统
--8.1 小节习题
-8.2 虚幻粒子基础功能介绍01
--8.2 小节习题
-8.3 虚幻粒子基础功能介绍02
--8.3 小节习题
-8.4 粒子特效的综合运用
--8.4 小节习题
-第八章 章节测试
-9.1 初识蓝图
--9.1 初识蓝图
--9.1 小节习题
-9.2 蓝图类型
--9.2 蓝图类型
--9.2 小节习题
-9.3 蓝图通信
--9.3 蓝图通信
--9.3 小节习题
-9.4 创建蓝图
--9.4 创建蓝图
--9.4 小节习题
-第九章 章节测试
-10.1 击中事件
--10.1 小节习题
-10.2 实现物体来回移动
--10.2 小节习题
-10.3 Input输入与玩家快捷键交互
--10.3 小节习题
-10.4 用户界面和HUD
--10.4 小节习题
-10.5 创建游戏约束
--10.5 小节习题
-10.6 游戏结束与重玩功能
--10.6 小节习题
-第十章 章节测试
-11.1 行为决策的AI
--11.1 小节习题
-11.2 AI监听玩家行为
--11.2 小节习题
-11.3 AI与玩家的攻击伤害
--11.3 小节习题
-11.4 AI生成点与随机巡逻
--11.4 小节习题
-11.5 优化游戏体验
--11.5 小节习题
-11.6 渲染及代码优化
--11.6 小节习题
-第十一章 章节测试
-12.1 音频基础
--12.1 小节习题
-12.2 音频混成器
--12.2 小节习题
-12.3 声音特效
--12.3 小节习题
-第十二章 章节测试