QueryContext
查询环境,表示以哪个东西作为查询参考点
两个常量:
EnvQueryContext_Querier表示查询者本身作为查询参考点,假如查询者为敌人的AI,那么就代表敌人本身。
EnvQueryContext_Item 表示生成的点本身
另外可以自己定义QueryContext,方法如下:
创建一个蓝图,基类选择EnvQueryContext_BlueprintBase, 然后override它的函数,根据需要进行override,共有4个函数可以override:
ProvideActorSet 提供一组actor
ProvideSingleLocation 提供一个三维向量
ProvideSingleActor 提供一个actor
ProvideLocationSet 提供一组三维向量
例如,下面的例子创建了一个提供ThirdPersonCharactor 对象作为参考点
Generators
用于生成一系列点
Points: Circle
Circle Radius:圆圈半径
Space Between:点之间的距离
Number Of Points:点的数量
Point on Circle Spacing Method: 采用点的间距还是点的总数来布点
Arc Direction 扇形方向
Arc Angle:扇形范围,例如180就只有半个圆弧
下面两项在其他Generators上都有,属于通用选项
Trace Data: 水平方向上Trace点的位置
Trace Mode:
None 完全无视NavMesh和物体,一般不会使用
Navigation 以NavMesh作为边界进行查找
Geometry 以几何体作为边界进行查找
Navigation Over Ledge 暂时未发现和Geometry的区别
Trace Channel:
查找通道,和Line Trace的channel一样。可选Visibility和Camera
Trace Shape:
类似于Line Trace和Sphere Trace。另外还有Box和Capsule可选
Projection Data: 垂直方向上Trace点的位置
Trace Mode:
Navigation 以NavMesh的高度作为目标高度
Geometry 以几何体的高度作为目标高度
Projection Down 向下延伸多少距离进行Trace
Projection Up 向上眼神多少距离进行Trace
Points: Cone
Points: Donut
Points: Grid
Points: Path Finding Grid
相当于在Grid的基础上过滤掉了无法导航到的位置
Tests
过滤条件
Distance
根据距离评分或过滤
Test:
(通用,后面的不再说明)
Test Purpose:
Filter Only: 仅过滤。对点进行一次“硬排除”,把不符合条件的点排除掉,而符合条件的点不做任何处理。
Score Only:仅评分。对所有的点进行一次评分,不做任何过滤。
Filter and Score:过滤和评分,对不符合条件的点进行排除,剩余的点进行评分。
Distance:
Test Mode: 哪个方向/维度上的距离
Distance 3D 三维空间距离
Distance 2D 水平方向距离
Distance Z 垂直方向距离
Distance Z (Absolute) 暂不清楚和上一个选项具体的区别以及应用场景
Distance To: (每个点)到哪里的距离
这里一般不适宜使用EnvQueryContext_Item,因为这样的意思就是测量每个点到自身的距离,当然所有的数值都是0,起不到任何作用
Filter: (通用模块,后续不再重复说明。仅当启用了Filter或者Filter and Score两个Test Purpose才有用)
有Range, Minimum 和 Maximum三个模式,分别是制定一个范围,选取最小的和最大的
Score:(通用模块,后续不再重复说明)
Scoring Equation:
Linear 线性增加,表示数值越大评分越高,在当前Distance过滤器中,意思就是离查询参考点越远,评分越高
Inverse Linear线性减少,表示数值越小评分越高,在当前Distance过滤器中,意思就是离查询参考点越进评分越高
Square和InverseSquare是上述两个选项的曲线图形平方。
Square Root,是Linear的平方根
Dot
Line A 第一个向量
Mode :
Rotation 使用一个对象的朝向
Two Points: 使用两个点
Line Frome: 向量的起点
Line To: 向量的终点
Line B 第二个向量
上图范例:LineA是查询者(图中TestingPawn)的朝向, Line B是从查询者到每一个目标点,由图可见,两个向量夹角越小,dot值越大。
Trace
很简单,视线检测,不过需要注意亮点:
首先一般这里都使用排除, 即Filter模式,因为这里的结果是布尔型的,评分没有意义
其次默认情况下,Trace过程中碰到了东西是True,没有Trace到东西结果是False,如果想把结果进行反向,可以在Score中把Bool Match 的勾去掉。
PathFinding
也很简单,检测从参考点到目标点之间是否存在导航路径。