使用EQS实现巡逻
2023年11月3日 2025年5月21日
说明
AI / EQS / Random Roam
AI系统
Environment Query System
EQS帮助NPC在给定的条件下对空间进行分析
本节将给出满足条件的适合NPC的位置区域
目的在于使NPC巡逻更自然
创建类
-
创建文件夹
AI/EQS
-
创建EQS资产
AI/EQS
目录下空白处右键 > Artificial Intelligence > Environment Query, 命名为EQS_RandomRoam使用EQS_RandomRoam取代巡逻时生成随机点逻辑
-
创建蓝图类
AI/EQS
目录下空白处右键 > Blueprint Class- 基类 EQSTestingPawn 名称 EQS_TestPawn 专门用于在虚幻编辑器对EQS进行测试. 游戏成品中不会使用到
添加到关卡中
-
在细节面板中设置EQS_TestPawn
在世界大纲选中EQS_TestPawn
Details > EQS > Query Template
, 设置为EQS_RandomRoam
介绍EQS资产
文档
类似行为树图表
从Root出发, 可以设置各种生成器
随机目的地
双击打开EQS_RandomRoam
介绍下列生成器
- | |
---|---|
Points: Grid | 方形点阵 |
Points: Circle | 圆圈点阵 |
Points: Cone | 扇形点阵 |
方形点阵
EQS_TestPawn身处方形点阵表示的位置区域中
可配置项 | |
---|---|
GridHalfSize | 点阵大小 |
Space Between | 点阵密度 |
圆圈点阵
只圆形周长存在有效位置
可配置项 | |
---|---|
Circle Radius | 半径 |
扇形点阵
EQS_TestPawn位于顶点处, 前进向量对应扇形中线
该模板用于选择前进时的下一个目的地, 因为前进向量的改变不会太突兀
可配置项 | |
---|---|
Aligned Points Distance | 射线上的点间距 |
Cone Degrees | 顶角 |
Angle Step | 射线密度 |
Range > Data Binding = None, Range | 半径 |
-
Projection Data > Track Mode
设置投影- Navigation 默认值, 显示投影到导航网格体的点阵 None 无投影, 会生成无法去到的位置点 Track Mode = None
-
Range > Data Binding
半径模板选项- None 默认, 固定值 Query Params Random number 设置随机数范围 Range > Data Binding = Random number
为扇形点阵添加限制条件
右键生成器, Add Test > Distance
: 根据位置点到顶点的距离对位置点进行筛选
Details > Filter > Filter Type |
限制类型 |
---|---|
Range | 给定范围 |
Minimum | 给定最小值 |
-
当前给定筛选距离范围, 最大值和最小值均为0, 所以无合适位置点
表示位置点的球型显示为蓝色: 不是合适的位置点 -
给定最小值
为每个位置计算到顶点的距离, 根据距离, 给出权重: 距离越大的点, 选中的可能性更高Float Value Min = 0.0: 颜色从红色到绿色, 权重由小变大
生成附近随机位置
- | |
---|---|
生成敌人附近的随机点 | 环状点阵 |
寻找敌人 | Context |
介绍新生成器
- | |
---|---|
Points: Donut | 环形点阵 |
环状点阵
Points: Donut
- | |
---|---|
Projection Data > Track Mode | 设置投影 |
Inner Radius | 内圈半径 |
Outer Radius | 外圈半径 |
Number Of Rings | 半径上的点个数 |
Points Per Ring | 一圈上的点个数 |
Arc Angle | 圆环扇形 |
Use Spiral Pattern | 螺旋模式 |
为环状点阵添加限制条件
使用Distance
- | |
---|---|
Filter > Filter Type | 筛选方式 |
Score > Scoring Factor | 权重比: 1则越远越大, -1则越近越大 |
-
权重比为1
最外层有几圈蓝色位置点, 均无效, 权重为0; 有效位置点由红色变为绿色, 权重由0变为1 -
权重比为-1
-
给定权重比范围, -1 ~ 1
设置中心点
环状点阵生成器中心点选项
选中环状点阵, Details > Center
- | |
---|---|
EnvQueryContext_Querier | 默认值, 使用EQS的上级Pawn; 可以自定义EnvQueryrContext |
环状点阵距离限制条件距离计算的参照点选项
选中Distance, Details > Distance > Distance To
- | |
---|---|
EnvQueryContext_Querier | 默认值, 使用EQS的上级Pawn; 可以自定义EnvQueryrContext |
设置EQS资产
-
添加生成器: 扇形点阵
配置 Cone Degrees 200 Angle Step 10 Range > Data Binding Random number Range > Data Binding > Min 1200 Range > Data Binding > Max 1600 Track Mode Navigation -
为扇形点阵添加距离条件: Distance
-
设置Distance: 限定筛选类型为最小值, 最小值为400
小于给定最小值的点, 显示为蓝色, 权重为0
在行为树运行EQS
-
断开ROOT节点到选择器的箭头
-
添加序列
-
为序列添加任务
Run EQSQuery
Details > EQS > EQSRequest > Query Template
, 选择EQS_RandomRoamDetails > Blackboard > Blackboard Key
, 选择AimLocation: 对黑板变量AimLocation进行设置 -
为序列添加任务
MoveTo
Details > Blackboard > Blackboard Key
, 选择AimLocation: 从黑板变量AimLocation获取目的位置 -
为序列添加任务
Wait
等待2s
查看
-
设置NPC生命值100
BP_STUAICharacter > Details > MaxHealth
-
在世界大纲选中AICharacter
-
按下
'
打开AI调试界面, 按下小写键盘3
显示EQS信息 -
选中位置点显示为浅绿色