12.创建 FindHidingSpot EQS

该步骤需要创建更为复杂的场景查询。将创建一个点网格投射到寻路网格体上,然后通过一系列测试找到最佳的藏身之处。部分测试将完全剔除掉不理想的位置,如处于玩家角色视线(Trace)中的位置,其他将基于寻路网格体是否可到达(PathFinding)权衡潜在的隐藏点,或玩家角色前有多少点存在(Dot Product)。

小提醒:

  • 生成器(Generator)创建与 Context 有关的项目(Item)

  • 测试中使用的项目通常与 Context 有关(项目 X 到 Context Y 有多远)

  • 基于测试结果对项目进行剔除和评分

步骤

  1. 首先,在 内容浏览器双击 FindHidingSpot 场景查询资源。

    findHide.png

  2. 创建 Simple Grid 生成器并将其和 Root 节点连接起来。

    simpleGrid.png

  3. 选择 Simple Grid 生成器并在 Details 面板中设置以下属性:

    gridProp.png

    • Grid Size = 2000.0

    • Space Between = 150.0

    • Navigation Filer = RecastFilter_UseDefaultArea

    • Project Down = 2048.0

    • Post Projection Vertical Offset = 32.0

    网格生成器的这些设置将创建大小可调,便于管理的多个项目,便于查询进行测试。如 AI 需要在其上方或下方进行寻找,Project DownProject UpPost Projection Vertical Offset 属性均十分便于进行变更。

  4. 右键单击 Simple Grid 节点并选择 Tests arrow_button.png Distance 添加 2 个 距离 测试

    addDistance.png

  5. 选择第一个测试,在 Details 面板中调整下列属性:

    distanceProps.png

    • Distance To = Player Context

    • Test Purpose = Score Only

    此距离测试将为离玩家 更远 的项目赋予更高分数。

  6. 选择第二个测试,在 Details 面板中调整下列属性:

    distanceProps2.png

    • Test Purpose = Score Only

    • Scoring Equation = Inverse Linear

    • Scoring Factor = 2.0

    此距离测试将为更靠近 AI 的项目赋予更高分数,较之前的 距离测试 权重更多,意味着它愿意靠近 AI,但仍然会选择远离玩家。

  7. 右键单击 Simple Grid 节点并选择 Tests arrow_button.png Trace 添加 2 个 Trace 测试

    addTrace.png

  8. 选择一个 Trace 测试并在 Details 面板中将 Context 改为 PlayerContext(之前在此快速入门中创建的 Context):

    traceProps.png

    我们将移除处于玩家 Pawn 或 AI pawn 视线中的项目。此外,您可能会担心该测试会在一系列的 Distance 测试后进行,但实际上无需担心 - 场景查询将无视此处的排序率先运行 Trace 测试。此外,其他 Trace 也无需进行额外设置。

  9. 右键单击 Simple Grid 节点并选择 Tests arrow_button.png Dot 添加 1 个 Dot 测试

    addDot.png

  10. 选择 Dot 测试,在 Details 面板中调整下列属性:

    dotProps.png

    • Line A - Rotation = PlayerContext

    • Line B - Line From = PlayerContext

    • Absolute Value = True

    • Test Purpose = Score Only

    • Scoring Factor = -1.0

    此处需要一些技巧,最高层上描述的是“偏好位于玩家 Pawn 两侧的项目”,但其工作方式稍显另类。Dot Product 函数将返回 2 个矢量在 1.0(完全相同)到 -1.0(完全相反)尺度上的相似度。因此,如果 Dot Product 的 绝对值 在玩家的旋转矢量和玩家到项目的矢量之间,则会偏好玩家前后的点。但如果将 Scoring Factor 设为 -1.0,则会偏好玩家两侧的点。

  11. 右键单击 Simple Grid 节点并选择 Tests arrow_button.png PathFinding 添加 1 个 PathFinding 测试

    addPath.png

  12. 选择 PathFinding 测试,在 Details 面板中将 Test Purpose 设为 Score Only:

    pathProps.png

    仅供编辑!最终的场景查询与下图相似:

    final.png