UE4 行為樹資料


Composites

Select 選擇

從左往右執行其子節點,直到一個達成,則 Select 達成並返回上層,否則失敗並返回上層

Sequence 隊列

從左往右執行其子節點,直到一個失敗,則 Sequence 失敗並返回上層,否則達成並返回上層

Simple Parallel 模擬並行

包含一個main task和一個sub tree, main task支持一個 Task 節點,用於執行一個主線行為,sub tree 支持一個行為樹,伴隨 main task 執行,返回結果是main task的執行結果

屬性

Apply Decorator Scope 應用裝飾器范圍:all decorator in Branch Below will be removed when execution flow leaves

裝飾器在分支下 will be 刪除 when 執行流離開

Task

Task 節點用於執行具體的動作,引擎內置的 Task 常用的有 Wait 、 Move To 、 Is At Location 等等,Task 一般是自行實現的AI具體的行為邏輯,其中的代碼與普通藍圖代碼一樣

Task 中的常用事件

  • Event Receive Execute / Event Receive Execute AI
    定義該 Task 的主體邏輯代碼,如果沒有特殊需求,則必須以 Finish Execute 節點結束,因為只有 Finish Execute 節點才能向上層返回執行結果,否則該 Task 如果不被打斷將不會執行完成

如果同時存在 Event Receive Execute 和 Event Receive Execute AI 兩個事件,優先執行 Event Receive Execute AI 事件

  • Event Receive Abort / Event Receive Abort AI
    當前任務被打斷時觸發該事件,用來處理突發情況對當前行為的影響,如果沒有特殊需求,則必須以 Finish Abort 節點結束,以結束該任務節點的執行

如果同時存在 Event Receive Abort 和 Event Receive Abort AI 兩個事件,優先執行 Event Receive Abort AI 事件

Task節點

官檔:http://api.unrealengine.com/CHN/Engine/AI/BehaviorTrees/NodeReference/Tasks/index.html

MoveTo

  • ReachTest Includes Goal Radius
    半徑於AI膠囊將會增加到截值於AI和目標位置之間在目的地搜索測試時

radius of ai's capsule will be added to threshold between ai and goal location in destination reach test

  • allow partial path
    允許部分路徑:使用不完整的路徑在目標無法到達時

use incomplete path when goal can't be reached

  • allow partial path
    允許部分路徑:如果已設置,則當選擇執行此任務但該任務已在運行時,將放棄任務搜索。

if set,task search will be discarded when this task is selected to execute but is already running

  • observed blackboard value tolerance
    觀察黑板值公差:如果任務預期對由BB鍵表示的位置的更改做出反應,此屬性可用於調整機制的靈敏度,建議值小於可接受的半徑。

if task is expected to react to changes to location represented by bb key this property can be used to tweak sensitivity of the mechanism,value is recommended to be less then acceptableradius

Decorator 裝飾器

Decorator 類型的節點用作條件判斷(類似於程序中的基本流程控制),附着於 Composites 或 Task 節點上
官檔:http://api.unrealengine.com/CHN/Engine/AI/BehaviorTrees/NodeReference/Decorators/index.html

Observer Aborts

  • None 不中止執行。
  • Self 中止 self,以及在此節點下運行的所有子樹
  • Lower Priority 中止此節點右方的所有節點
  • Both 終止 self、此節點下運行的所有子樹、以及此節點右方的所有節點

Composite

可內部自定義邏輯組合用於最后的判斷:節點是否執行
新建的Decorator,重寫perform condition這個函數就可做到與Composite相同的功能。
https://www.cnblogs.com/timy/p/9047961.html

Services

Services 附着在 Composite 節點上,只要其分支節點被執行,它們便將按所定義的頻率執行。它們常用於檢查和更新黑板。它們以行為樹系統的形態取代了傳統平行節點
可在行為樹圖表編輯界面添加自定義的Service,在Service中添加若干Blackboard Key Selector類型的引用變量暴露出來並編譯,然后將Service附着在Composites或者Task節點上,在節點上點擊已附着的Service,在其屬性欄中為其中的變量指認黑板上的鍵,然后在Service中編寫邏輯代碼對已指認的變量進行更新

Service中的常用事件

  • Event Receive Search Start / Event Receive Search AI
    在任務搜索進入樹的分支時被調用。比如有一個父節點A,其下面有兩個子節點B和C,當任務搜索進入A時調用A的Service中的Search Start,如果A完成或者被打斷,當任務搜索進入B時,將再次調用A的Service中的Search Start

如果同時存在 Event Receive Search Start 和 Event Receive Search Start AI 兩個事件,優先執行 Event Receive Search Start AI 事件

  • Event Receive Activation / Event Receive Activation AI
    在某節點從非活動子樹的一部分變為活動子樹的一部分時觸發

如果同時存在 Event Receive Activation 和 Event Receive Activation AI 兩個事件,優先執行 Event Receive Activation AI 事件

  • Event Receive Deactivation / Event Receive Deactivation AI
    在某節點從活動子樹的一部分變為非活動子樹的一部分時觸發,如果附着於Task上,節點離開不會觸發,附着於Composites上可以觸發。

如果同時存在 Event Receive Deactivation 和 Event Receive Deactivation AI 兩個事件,優先執行 Event Receive Deactivation AI 事件

  • Event Receive Tick / Event Receive Tick AI
    當Service所在的節點是活動子樹的一部分時,Tick事件將以指定的頻率調用,Tick的觸發時間間隔由所在Service的Interval和Random Deviation屬性共同決定,Interval指定基礎時間間隔,Random Deviation指定在基礎時間間隔上的隨機誤差

如果同時存在 Event Receive Tick 和 Event Receive Tick AI 兩個事件,優先執行 Event Receive Tick AI 事件

總結

Composites類似於分支,Decorator類似於分支的判斷,Task類似於Actor的動作,Services控制變量的值。
行為樹操作黑板,Pawn操作黑板,動畫藍圖操作黑板,抽像出了一層
使用行為樹可使行為邏輯 直觀,復用,可擴展,好維護。

原代碼

例:BTTask_MoveTo----文檔上查不到屬性,因屬性不是Public
UBTTaskNode ---->Task相關程序

相關網址

行為樹歷史
EQS與行為樹
操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM