1. 程式人生 > 實用技巧 >UE4 行為樹與EQS

UE4 行為樹與EQS

行為樹

  • 需要建立AIController藍圖,使被AI控制的模型

  • 黑板:存放變數

  • 行為樹:執行邏輯

  • NavMeshBoundVolume:AI移動的範圍,需要建立導航網格設定移動範圍,(檢視NavMesh的快捷鍵:P)

  • 行為樹是從上到下,根節點向下執行,是從左到右執行相同層次的節點

  • 這是一個簡單的行為樹

Composites:Selector,Sequence,SimpleParallel

Selector(選擇):Selector 節點從左至右執行其子項,其中一個子項達成後將停止執行其子項。如 Selector 的子項達成,則 Selector 也達成。如 Selector 的所有子項未達成,則 Selector 未達成。
Sequence (序列):節點從左至右執行其子項,如其中一個子項未達成,將停止執行執行其子項。如子項未達成,則 Sequence 也未達成。如 Sequence 的所有子項均達成,則 Sequence 也達成。
(感覺Selector和Sequence的區別就在於是 ”或“ 和 ”且“ 的關係)
SimpleParallel(並行):所有子節點都執行一遍。

Decorators,Services,Tasks

Services: 定時執行一個操作,通常在根節點下的selector中執行,可以定時檢查操作,常用於檢查和更新黑板
Decorators:條件語句,附著雨一個Composite或者Task節點,並定義樹中的一個分支或單個節點是否可以執行
Tasks:Task 是真正“執行”操作的節點,如移動 AI,或調整黑板值。
  • 播放動畫

  • 首先設定好動畫藍圖,人物運動動畫來回切換,然後通過行為樹修改人物設定的狀態,通過行為樹執行播放相應的動畫

  • UE4處理併發行為的三個優點

明確:使用服務節點和簡單平行節點創造的樹更簡明,易於觀察和理解。
除錯簡單:圖表更清晰,便於糾錯。此外同時執行路徑更少,更易於觀察正在執行的內容。
更易於優化:由事件驅動的圖表如果沒有同時執行大量子樹,將更易於優化。

EQS

  • EQS全稱:Environment Query System,官方介紹是給虛幻提供給AI,用於收集環境資料測試分析,尋找到最符合測試的結果,EQS幫助AI篩選玩家的位置資訊,將周圍進行打分,選最高分或最低分,給AI選擇更合的結果。

  • 開啟Edit–Editor Preferences–搜尋框EQS,然後勾選“Environment Querying System”,然後AI框裡會多一個EQS藍圖

  • 生成器介紹

Distance:距離測試節點,將選擇器選取的點用給予和參照內容進行距離測試。距離越遠則分值越大,如果希望越近分值越大請調整Score中的Scoring Equation,將線性遞增改為遞減(Inverse Linear)。
Dot:使用點乘的方式,為選取點打分,值域範圍0-1(點乘有負數,打分無負數,正面為1,背面為0,呈現扇形左右遞增向1)。也可以對結果進行絕對值設定(勾選Absolute Value,結果為點乘後絕對值值域0-1,正面1,背面1,左右兩邊0)。點乘中的向量選取可以使用兩點方式或是Rotation方式。
Gameplay Tags:使用標籤進行詢問測試(GamePlay Tags本身是為Actor查詢操作提供分層,一般用於查詢。關於GT使用,我後期會出一篇文章介紹)
Overlap:在取樣點,使用通道檢測方式,返回是否有符合通道標記的內容存在。如存在返回1,反之返回0。檢測形狀,Box,Sphere,Capsule。用於檢測查詢某一個點附近是否存在某一樣東西。
Pathfinding:將取樣點與內容進行導航尋路器測試,可達則分數1,不可達為0。它將用於最終測試點生成,返回一個可達測試點。
Pathfinding Batch:將取樣點與內容進行導航尋路器測試,可達則分數1,不可達為0。它會返回所有可達點,供下個測試專案使用。
Project:投射測試。可以用來修正生成器取樣點位置。兩種模式:導航投射,在取樣點為基準,垂直向上向下進行導航檢測,碰到導航覆蓋點則修正取樣點位置。形狀檢測,不考慮導航,只要在通道碰撞成立,則修正取樣點到新的位置。
Trace:射線測試。用來測試取樣點,到Context參照點之間是否存在遮擋,這是重要節點,一般可以用來尋找可以用來躲避的取樣點(從取樣點到敵人之間存在遮擋則認定可以躲避)。存在遮擋分數為1,不存在為0。注意:需要考慮高度問題,取樣點一般均在地面,從地面直接發射射線到Context可能會出現被非常矮的物體阻擋,可以通過調整Height Offset解決此問題。

總結

  • EQS可以和行為樹相結合使用,可以實現更好的AI邏輯,相對減少了工作量,EQS內容相對較少,但是理解不是那麼容易,需要手動操作實踐。