12.创建 FindHidingSpot EQS

创建一个 EQS,在网格上寻找最佳藏身点,躲避玩家的 TopDownCharacter。

Windows
MacOS
Linux
On this page

该步骤需要创建更为复杂的场景查询。将创建一个点网格投射到寻路网格体上,然后通过一系列测试找到最佳的藏身之处。部分测试将完全剔除掉不理想的位置,如处于玩家角色视线(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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback