当前课程知识点:虚幻引擎(UE4)技术基础 > 第十一章 游戏AI > 11.1 行为决策的AI > 11.1 行为决策的AI
大家好
欢迎来到虚幻引擎技术基础课堂
我是主讲教师
黄颖翠
现在我们将在
虚幻引擎技术基础课程中
游戏AI章节
学习实现行为决策的AI
这章
我们开始接触AI了
我们这节课主要了解AI的应用场景
AI是通过什么方式进行设计的
最后我们需要学习行为树
黑板
AI控制器
构造一个决策AI
第一点
AI的应用场景
人工智能开发
是游戏研发中最具挑战性的任务之一
那么游戏中AI的具体使用场景在哪里呢
英雄联盟里怪物战斗AI
场景AI
人机挑战中机器人战斗AI
除了大家熟知的LOL
3A大作里AI一般运用到哪里呢
巫师3中的NPC AI
怪物AI等AI运用
基本可以囊括
现有AI的运用场景
从上面举的两个例子
已经可以看出现在制作游戏离不开AI
AI通过什么方式进行设计
现在游戏AI
基本通过下面两个方式实现
行为树与有限状态机
行为树就是一棵节点层次分明的树
控制着AI物体的一系列决定
从树延伸出的叶子节点
执行控制AI物体的指令
各种工具节点组成树的分支
来控制AI指令的走向
以形成一系列的指令
这样来满足游戏需要
“状态机”是一种表示状态
并控制状态切换的设计模式
常常用于设计某种东西的多个状态
而有限状态机是指
游戏内的条件逻辑封装到各个状态类里
例如一个人有站立状态
跑动状态
走路状态
蹲下状态
开火状态等
当一个事件发生
将会触发一个动作
或者执行一次状态的迁移
好
现在开始操作部分
我们这节课
要做一个AI
他会在两个位置点 来回巡逻
当他看到我们时
就会靠近我们
现在我们开始实现这个效果
首先我们到虚幻商场里面去找我们需要的资源
我们在这里搜索 Animation starter pack
然后点击下载
我这边之前已经下载了
这个AI也不是什么地方都可以走的
我们需要限制行走范围
我们在体积这里找到 Nav mash
拖进场景
我们的地面需要在这个矩形区域内
我们可以看到地面出现了绿色
绿色就是可行走范围
有障碍物的地方就不能走
我们在内容文件夹中创建文件夹
改名为Enemy敌人
我们需要创建4个东西
来实现AI
在里面 我们创建AI本体蓝图类
这个本体需要继承
与UE4Asp_Character
点击选择按钮
取名EnemyCharacter
我们还需要创建一个控制器
继承于AIChontroller
取名EnemyController
还需要创建行为树
取名EnemyBehavior
再创建黑板
取名EnemyBlackBoard
现在我们还需要创建
让他可以导航的点
查找TargetPoint
我们需要让他导航到哪个地方
就把TargetPoint放置到哪个地方
把这个导航修改下名字为Npoint1
拷贝一个
移动到新的位置
取名为Npoint2
好了
这两个点就是我们给AI定的行走位置
让AI
在这两个位置上来回行走
好
接下来
我们需要让这个AI有一定的智能
我们打开黑板
黑板是干什么的呢
黑板是用于设置AI的
共同所认识的变量
我们先给他建一个键值
point
这里就是键值巡逻点
这个是一个变量
是每一个AI都能看到的地方
这里基础类型我们设置它的类型为Actor
因为每个巡逻点都需要用到它的位置
Actor类型可以存储到位置
它需要限定这个键值可以被赋值的类型
好
我们回到我们熟悉的蓝图面板
首先我们需要建立几个变量巡逻点1
point1
actor类型
把它眼睛睁开
然后复制一个
取名为point2巡逻点2
再拷贝一个取名为currentPint
当前巡逻点
巡逻点1和巡逻点2
就是要告诉AI
以后就在这两个点来回巡逻
而currentPint
是当前AI正在向哪个巡逻点前进
那这个AI的蓝图主要干什么呢
我们现在来画蓝图
我们把这不需要的事件删除
我们保留beginPlay
我们先找到黑板
get black Board
设置值的类型
Set value as object
我们刚设置的键值就是Object类型
我们现在需要把黑板的键值改一下
名字是point
这个名字不能打错了
然后这个键值是需要一个值的
我们要给的值就是当前点
黑板获取前还需要一个self
好了
这个AI就可以直接给这个黑板的键值
进行赋值了
可能大家要问
那这个赋值的意义是什么
这个值的意义在后面才会需要
我们在场景中
给这三个变量设置一下值
Point1赋值场景中的
巡逻点Npoint1
point2 赋值场景中的
巡逻点Npoint2
currentPoint我们就暂定为
巡逻点已Npoint1
也就是当游戏运行时
先向巡逻点1方向行走
我们还需要给这两个巡逻点添加碰撞器
用于AI碰到巡逻点后
可以触发逻辑
来到我们蓝图
刚刚我们已经给变量赋了值
那运行后这个point也会赋值
就是巡逻点1
好
下面我们需要编辑一下
当AI碰撞到巡逻点后
需要做的事情
要用beginOverLap
当AI碰到巡逻点要做的事情
就是需要判断下一个巡逻点的位置
我们先判断当前是否是巡逻点1
如果不是巡逻点1
那就是假
那需要再判断下是否是巡逻点2
如果不是巡逻点2
那就不做处理
我们需要处理如果当前是巡逻点1
那我们需要把当前巡逻点设置为巡逻点2
而当前巡逻点是2时
则设置当前巡逻点设置为1
好
下面我们需要把黑板的值用到AI身上了
我们需要先把右边细节面板中的
Auto Prossess AI的值
设置成我们刚刚创建的
EnemyController 敌人控制器
这样就把蓝图
和我们新建的控制器连接起来了
那这个控制器需要改什么呢
我们需要它运行一个行为树
选择我们刚创建的
EnemyBehaviour 敌人行为树
Controller就做完了
我们来整理下
现在本体已经关联到了控制器
控制器关联了行为树
这个行为树我们应该做什么呢
我们需要让这个行为树根据黑板的值
让AI进行一些行为
首先这个行为树需要和黑板挂钩起来
在细节这里我们选择我们的敌人黑板
你会发现它已经指定好了
因为我们工程中只有这一个黑板
他自己就指定好了
我们现在可以关闭黑板和行为树
从新打开行为树
我们发现黑板
和行为树已经融合一体
我们可以在行为树右上角
可以切换选择黑板
首先我们先拉一个选择器
然后拉个序列
这个选择器
就是按照顺序尝试执行下面的序列
例如这底下有些行为
例如
睡觉
看书
这底下是行走
吃饭
如果第一个成功了
那后面的其他序列就不会做了
如果第一个不成功
再去尝试第二个
不行再第三个
那这个序列下面是可以有很多的事情
例如睡觉
看书
玩游戏
都会执行
他会尝试做他下面所有事情
如果有一个失败
就会返回失败
尝试下一个序列
好
我们现在来做巡逻
我们需要在序列这里
加一个MoveTo移动到某个位置
然后这里选择刚定义的键值point
移动到这个键值
然后再建立一个序列
下面放一个键值
做等待wait 2-4秒
为什么要做等
是用来当到达巡逻点
就给他换一个新的巡逻点
好运行看下效果
AI会在巡逻点来回行走了
这个巡逻功能就基本完成了
本小节的操作讲解已经完成
留给大家一个思考题
了解游戏AI
与智能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 小节习题
-第十二章 章节测试