← 筆記 [C++/UE] UE5中AI開發的一點功能梳理(九) – Environment Query System(EQS)Test說明以及運行、調試
Test說明
Test公有參數說明
- Test Purpose:Filter Only / Score Only / Filter And Score
- Filter用於決定那些測試點會被直接裁切掉
- Score根據Test的性質,給每個測試點賦予分數權重
- 如Distance的測試,就會根據Test Point 距離指定Context的遠近作為自變量
Distance
- 以與目標(Distance To)的距離為參數進行測試
Dot
- 根據兩個向量的點積進行測試
- 兩個向量可以分別是Context的Rotation向量或A Context到B Context的向量

- 一般來說,Two Points的配置中,會使用目標Context作為Line From,EnvQueryContext_Item作為Line To
- 由於EnvQueryContext_Item指的是具體生成出來的每個測試球,因此就能知道每個測試球與目標Context的點積結果

- 如果指定的是目標Context到Querier的話,就會導致所有測試球的結果都是相同的,因為它們顯示的,都是Context到Querier本身的點積測試結果,而不是Context到每個球的點積測試結果

- 匹配特定Tag
- Reject Incompatible Items 如果為true,當對象Actor沒有實現IGamePlayTgAsset接口,就會直接忽略;否則就會正常檢測到並賦予0分或者是過濾掉
Overlap
- 判斷每個點在特定形狀(Overlap Shape)的一定範圍內是否有與其他指定Channel(Overlap Channel)的Actor接觸

- Extent X/Y/Z:每個Item上的檢測範圍尺寸
- Shape Offset:檢測範圍偏移
- Only Blocking Hits:false的就會把Trigger也加入檢測
Volume
- 但是可以支持自定義體積形狀的指定(Volume Context / Volume Class)
Pathfinding(Batch)
- 根據導航網格提供的訊息進行測試(路徑存在/路徑成本/路徑長度)
Trace
- 使每個測試球向目標(Context)發射 或 讓目標向每個測試球發射射線(if Trace From Context == true),返回兩者之是否存在遮擋,有遮擋返回1
- 可按需調整目標Context和每個測試球Item的測試高度偏移(Context Height Offset / Item Height Offset)

Project
- 主要用於調整測試點位置,讓測試球在上下一個投射範圍中檢測導航網格或者地形通道,接觸到覆蓋點就修正採樣點至該位置
EQS的啟動

- behavior tree調用
- 接入Run EQS Query節點
- EQS返回的是位置信息,因此Blackboard Key需要一個AI知道後會考慮移動過去的Vector Key

-
- RunMode:Item指的是EQS返回的可行點列表中的每一個點
- 每次Run EQS Query都會導致一次測試點的生成以及每個點上的Test執行發生
調試
- 編輯時點撃P,顯示Navmesh的相關調試訊息
- 具體細節顯示可在Project Settings -> Navigation Mesh -> Display裡編輯

- 運行時點撃apostrophe s,打開運行時的AIDebug面板,根據需求點撃小鍵盤上的0 ~ 5,顯示不同的Detail
