EQS

Posted 游戏开发技术笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EQS相关的知识,希望对你有一定的参考价值。

QueryContext

查询环境,表示以哪个东西作为查询参考点

两个常量:

EnvQueryContext_Querier表示查询者本身作为查询参考点,假如查询者为敌人的AI,那么就代表敌人本身。

EnvQueryContext_Item 表示生成的点本身

另外可以自己定义QueryContext,方法如下:

创建一个蓝图,基类选择EnvQueryContext_BlueprintBase, 然后override它的函数,根据需要进行override,共有4个函数可以override:

ProvideActorSet 提供一组actor

ProvideSingleLocation 提供一个三维向量

ProvideSingleActor 提供一个actor

ProvideLocationSet 提供一组三维向量

 

例如,下面的例子创建了一个提供ThirdPersonCharactor 对象作为参考点

 

 

Generators

用于生成一系列点

 

Points: Circle

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

也很简单,检测从参考点到目标点之间是否存在导航路径。

以上是关于EQS的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1840.Eqs

EQS

POJ 1840:Eqs

在机械制图中,EQS表示啥意思?

POJ 1840 -- Eqs

POJ 1840 Eqs