斯坦福UE4 C++课学习补充25:寻路EQS
文章目录
- 一、创建EQS
- 二、修改行为树
- 三、查询上下文
一、创建EQS
- 场景查询系统
EQS
:可用于收集场景相关的数据。然后该系统可以使用生成器,通过各种用户定义的测试就这些数据提问,返回符合所提问题类型的最佳项目Item
。
EQS
的一些使用范例包括:找到最近的回复剂或弹药、判断出威胁最大的敌人,或者找到能看到玩家的视线
参考链接:
https://dev.epicgames.com/documentation/zh-cn/unreal-engine/environment-query-system-in-unreal-engine?application_version=5.3
- 创建名为
Query_FindNearbyLocation
的EQS
,
从根节点拖出一条线,选择Point:Donut
类型。Point
是一种生成点的生成器,它会围绕一个中心点生成一个环形区域(类似甜甜圈形状),并在这个区域内生成一组点。
- 测试选择
Distance
,它以距离作为评分依据,对生成器生成的点进行评分。如下图,距离一栏内的到此距离Distance to
默认为EnvQueryContext_Querier
,指的是查询的发起人,也就是AI角色自己。
- 过滤器的过滤类型改成了最小,浮点值改成了500,即500外的位置才会被考虑进评分。
- 得分因数
Score Factor
:是一个影响得分的乘数。负数因数意味着距离越远,得分越低;距离越近,得分越高。
Trace: to QueryContext_TargetActor on
可视性:主要是用于检测从生成的点到目标的可见性。它确保生成的点不被障碍物遮挡,从而只保留那些AI能够直接看到目标的点。
二、修改行为树
- 环境查询最终会修改我们选择的黑板键
MoveToLocation
- 运行模式设置为单一最佳项目
Single Best Item
:它决定EQS查询的结果如何处理。单一最佳项目模式意味着EQS会根据评分机制选择评分最高的单个点并返回给行为树的执行。 - 更新
BBOn
失败:勾选了此选项表示:当EQS查询失败时,会更新黑板变量BB
为某个默认值或无效值。
- 对准AI小兵点击
'
,可调出AI的debug
界面,击小键盘的3
,可以查看环境查询的结果
三、查询上下文
QueryContext
查询上下文是定义了EQS
系统生成查询时使用的信息来源或上下文。在设置EQS查询时,QueryContext
指定从哪里获取某些数据,例如玩家的位置、AI控制的角色或环境中的其他参考点。EQSTestPawn
是UE中专门为调试和测试EQS
而设计的一个Pawn
类。它的主要作用是在开发过程中帮助设计者和开发者更方便地测试环境查询系统的效果。
(1)可视化EQS查询:EQSTestPawn
能够帮助我们直观地查看和调试EQS查询的执行情况。在游戏中,可以看到EQS如何生成查询点,以及这些点是如何被筛选和评分的。
(2)测试行为:可以在EQSTestPawn
中设置不同的查询参数、测试不同的查询类型(如找到最近的物体或可达位置),然后观察EQS如何处理这些查询。