当前课程知识点:虚幻引擎(UE4)技术基础 > 第十一章 游戏AI > 11.2 AI监听玩家行为 > 11.2 AI监听玩家行为
大家好
欢迎来到虚幻引擎技术基础课堂
我是主讲教师
黄颖翠
现在我们将在
虚幻引擎技术基础课程中
游戏AI章节
学习实现AI监听玩家行为
这章
我们再深入学习敌人AI设计
学习用NavMash控件实现跟随逻辑
同时学习AI如何通过
听觉判断玩家位置和做有效决策
好
开始操作部分
现在我们来实际操作一下
让AI通过听觉判断玩家位置跑过去
第一要发出声音
我们什么时候发出声音
理论上
开枪
跑
跳事件中应该出声音
然后就是收声的地方
就是行为树上面接收到声音
并收到后可能做点什么
现在我们实现一下通过听觉
发现玩家靠近
因为看到我们跑过来和听到声音跑过来
肯定是看到跑过来优先级高
巡逻是最不重要的事情
所以我们在行为树中间这里
也就是看到玩家的序列后面
创建一个新的序列
节点名称FindPlayer
这个序列后面做一些听到声音后的动作
然后它添加一个装饰器
节点名称为HeardPlayer
观察者终止选择
低优先级
也就是当这个序列满足条件
低优先级的序列就会被中断
不选这个中断就不会执行
然后需要在黑板那里定义一个变量
用于设置下
是否听到了声音
在黑板这里加一个布尔类型的变量IsHeard
在行为树面板这里黑板键值选择IsHeard是否听到
如果听到了我们就可以做他下面的任务了
这下面的任务有什么呢
首先肯定是会走向玩家
走到玩家跟前后
在设置个等待
4秒后
在回到听序列这里
然后再回到选择器这里
然后它又要往下来走
等待4秒后
需要重置这个Isheard变量
让AI忘记刚刚听到了玩家发出的声音
我们来做一下
我们新加一个任务
取名ClearLocation重置位置任务
在最开始调用该任务
因为如果放到等待后面
就会出现本来是‘听’到声音过来
因为优先级的原因
在过来的途中触发了‘看’
然后攻击完成后
又走回刚开始听到的位置
现在这个新任务主要是重置这个IsHeard布尔变量
我们在任务这里定义一个变量key
来表示这个IsHeard变量
是个黑板键值类型
打开眼睛
然后创建一个接收事件
一个完成事件
选择返回真success
然后再设置一个value变量
存储值
布尔类型
我们在接受事件后设置黑板上的布尔值
添加key和value
因为在行为树上
如果在“听”这个序列正在执行时
如果正好有“看”这个序列也满足条件
就是听到声音
像玩家走过来
那就很容触发“看”
由于优先级
‘听”就会被直接中断
进入“看”的序列
这样就不应该了
所以我们需要在这个任务中加上放弃事件
也就这个任务被放弃时触发
加上放弃事件的开始和结束
然后在这里依然设置黑板的布尔类型值
并且连接好key和value
那么在听这里的移动是移动到哪里呢
听玩家吗
不
因为玩家会跑掉
应该是听到产生位置的地方
也就是location位置
所以我们再在黑板定义个变量SoundLocation
然后在行为树的听到移动这里
修改下黑板的键值为SoundLocation
我们需要声音的位置
那这个声音位置是什么位置呢
在行为树也能赋值
但是比较麻烦
我们到敌人的控制器里面
把黑板里面的设置声音位置在这里赋值
我们先获取黑板
先把黑板的做一个添加变更路线节点
放到这里
方便后面用
我们通过这个节点出来
设置一个布尔值
设置set value as bool
然后在设置一个方向值
set value as vector
我们肯定是需要先设置好它要听到的位置
然后在设置听到状态
然后什么事件触发设置这两个变量呢
我们需要一个听的事件
听到声音再设置位置
然后设置布尔
那现在设置位置的
KeyName键值
名称SoundLocation
设置布尔类型的键值名称IsHeard
然后把声音发出的位置赋值
给sound location
然后布尔类型值勾上
就是真意思
我们可以看到场景中
这个就是AI的视角范围
也就是这个绿色线
视角的检测范围
然后这里是无遮挡的听觉范围
蓝色圆形线
然后这个黄色的圆形线球
是如无遮挡的听觉范围
我们回退数值
我们看到这个黄色球范围有点大
否则我们不好区分它的听觉范围
但是我们如果只是在场景中改这三个值
它只能把这个一个敌人的数值修改了
我们需要每一个敌人
每一个新生成的敌人都改成一样的
所以我们需要在敌人的控制器里面改
这个听的逻辑就做完了
那出声的地方需要添加下
我们可到玩家蓝图中的开枪
跑
跳这几个动作加点声音
我们先给人加上噪音发射器
我们在射击这里
播放枪声的后面添加噪音
make noise
这里位置就用自己玩家位置就可以了
编译一下
然后在加速奔跑这里
也加上这两个函数
这样我们就会在跑
和射击的时候会发出噪音
好我们来试一下
靠近他
在他后面发射子弹
他走过来了
好
这个通过听觉和视觉
来监听玩家行为的AI功能基本完成了
本小节的操作讲解已经完成
留给大家一个课后练习
请大家课后自己操作一下
做一个游戏AI
当玩家靠近他
他会走向一盏灯
并把这盏灯点亮
好
本节课内容就讲解完毕
感谢大家聆听
再见
-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 小节习题
-第十二章 章节测试