生成器与情境:候选点从哪来

生成器决定"有哪些候选点",情境决定"以谁为参照"。两者是 EQS 查询的输入侧。

常用生成器

生成器 产生的点 典型场景
Circle 环形采样圈 围绕目标的包围圈、围绕自己的安全圈
Grid 网格 大范围搜索(适合"附近哪里有掩体")
Path 沿路径的点 巡逻路径、包抄路径
Points 引用一组手工点 配合 Smart Objects
Composite 组合多个生成器 复杂需求

关键配置:空间采样参数

  • 半径 / 网格间距:决定候选点密度。密度高 = 结果精细 = 查询慢;
  • 数量上限:生成器可设最多产生多少点。必设,否则一个 10 万点的网格查询能卡死 AI;
  • 导航过滤:只保留落在 NavMesh 上的点(AI 走不到的点没意义)。

情境(Context)

情境是"参照物"的抽象:距离测试的"目标点"可以是查询者、移动目标、双方的中点、某个固定位置。常用情境:

  • Querier:查询者自己;
  • Target:目标(黑板里的目标 Actor);
  • Both / Midpoint:两者中点(适合"夹击"类查询);
  • 自定义:蓝图 / C++ 提供任意位置。

实例:远程兵的"找掩体"查询

生成器:Circle(围绕 Querier,半径 15m,间距 1m,上限 120 点)
情境:Target(当前敌人)
测试项:
  ├ Test 距离目标 8~25m(权重 2)  → 太近危险太远打不到
  ├ Test 有掩体(Trace 掩体测试,权重 3)→ 必须能藏住
  └ Test 到查询者距离近(权重 1)  → 懒,少走路

打分逻辑(总分 = 各测试加权和)让 AI 选出"又能藏、又能打、又不远"的位置——这就是 EQS 的全部表达力来源。