ue4 ai 行爲樹 筆記

本文注重原理,具體每個節點的各種值不詳細說明。

ai行爲樹的原理和流程:

 感知:ai角色添加感知控件,目標角色添加被感知的敏感源。ai角色就能感知到目標角色。ai角色有了感知功能,就能感知周圍環境,收集信息,爲做出決策提供信息。感知控件類型有:看到,聽到,touch到,被傷害等

 思考:利用黑板,行爲樹,compoise等節點,寫出複雜的條件判斷和處理。

行動:思考有了結果,就去行動實施。用Task節點來實現,比如讓ai角色move to ,roator,play animation等等一系列的具體的行動。

 

 

前提支撐:

1、

2、

ai的行動階段,比如move to 某個點,ai角色需要自動繞過阻礙物,到達目標點,這個時候需要nav mesh 來做自動尋徑的支撐。

 NavMesh Agents由於不同ai角色大小不同,有的是走路,有的是有用,有的天空飛, NavMesh Agents是爲了解決各種個體差異而生。意思是同一個場景不同的agents會生成不同的nav mesh。在RecastNavMesh中設置Agents參數。

3、Gameplay調試器,運行解決按  ‘  鍵(單引號)會出現一些信息,方便調試。下圖是sight 感知的信息。

 

上圖顯示的信息有:地面綠色的是nav mesh的信息。 綠色的球體和綠線,顯示的是感知信息,當前目標角色能被ai角色看到,因爲目標在ai角色的視野裏。

4、AI感知事件。當ai角色添加AIPerception控件後,就有了感知世界的能裏,當感知到信息,得觸發事件把信息傳過去,好讓我們來處理。下圖是sight 感知。

 

核心 行爲樹

行爲樹組成部分如圖:

 行爲樹是由很多個節點組成,執行順序是自上向下,自左向右。下面一一介紹節點

Composite node ,只有成功和失敗兩種結果,有結果就返回父節點。有以下三種

1、選擇器(Selector):從左向右執行子節點,遇到一個子節點成功就返回成功,不執行下一個節點。所有子節點都失敗就返回失敗。

2、序列(Sequence):從左向右執行子節點,遇到一個子節點失敗就返回失敗,不執行下一個節點。所有子節點都成功就返回成功。

3、簡單平行(Simple Parallel :(不常用)允許一個主任務節點沿整個的行爲樹執行。主任務完成後,結束模式(Finish Mode) 中的設置會指示該節點是應該立即結束,同時中止次要樹,還是應該推遲結束,直到次要樹完成。

-----------------------------------------------------------------

Task節點:有三種狀態 運行、成功、失敗。是最終ai結果的表現。

有以下幾種

-----------------------------------------------

裝飾器節點(在其他行爲樹系統中也稱爲條件語句)連接到合成(Composite) 或任務(Task) 節點

由很多種,都是起到條件判斷的作用。這裏不一一說明。

--------------------------

服務(Service) 節點通常連接至合成(Composite) 節點或任務(Task) 節點,只要其分支被執行,它們就會以定義的頻率執行。這些節點常用於檢查和更新黑板。

 

 

有了以上的具有自身規則的節點,我們就可以寫出很複雜的判斷邏輯。

 

黑板(blackboard)

黑板就就是行爲樹的數據結構,行爲樹會根據黑板裏的數據數值不同做出不同的判斷。外部可以通過修改黑板裏的數據。

 比如上圖中HasSight是代表看到目標沒有?TargetActor是代表捕獲到目標沒有。行爲樹中完全可以通過裝飾器節點來判斷這些值是否有變化,來決定其附着的混合節點是否執行。

總結:

通過感知修改黑板裏內容,行爲樹又會根據黑板內數值不同執行不同的邏輯。就這麼簡單。

 

 

場景查詢系統(EQS)目前是實驗階段,暫時不表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章