生成器与情境:候选点从哪来
生成器决定"有哪些候选点",情境决定"以谁为参照"。两者是 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 的全部表达力来源。
