如果要讓游戲里的角色或者NPC能執行預設的AI邏輯,最簡單的用IF..ELSE...神器既可以實現,
但是再復雜的一般用經典的狀態機來切換狀態,但是寫起來比較麻煩。相對的,行為樹(Behavior Tree)理解和編輯起來就非常簡單了。
行為樹,其實也是一種有限狀態機,只不過形式上分層呈樹結構,人稱分層有限狀態機(HFSM)。
行為樹主要用四種節點來描述行為邏輯
--順序節點(Sequence):組合節點,順序執行子節點,只要碰到一個子節點返回FALSE,則返回FALSE;否則返回TRUE。
--選擇節點(Selector):組合節點,順序執行子節點,只要碰到一個子節點返回TRUE,則返回TRUE;否則返回FALSE。
--條件節點(Condition):葉節點,執行條件判斷,返回判斷結果。
--執行節點(Action):葉節點,執行設定的動作,一般返回TRUE。
比如:我們要表達一個最簡單的NPC AI :
如果碰到主角,打招呼;否則,睡覺。
行為樹的結構如下(其中黃色的是裝飾節點,這里當做CD定時器來處理,在CD時間內這個節點一直返回FALSE,否則返回TRUE):
設計好這個圖,實現時將其轉化為xml或者lua table或者json或者其他層次化的表示供程序讀入,並構建好樹對象,整個執行流程偽代碼可能是這樣的:
function gameBrain.init() bt = btreee:new() bt.load("test.xml") end function gameBrain.update() bt.execute() end function main_cycle() --... brain.update() --... end
有了這樣一顆行為樹,如果我們改變Condition的條件及兩個不同的Action的具體操作,就可以實現各種各樣的IF...ELSE...的AI邏輯;你可能說這簡直就是簡單問題復雜化;對於上邊的這個邏輯的確是這樣。但是行為樹的優勢在於其可以用層次化的方式表述AI,甚至可以用很簡單的圖形化的方式來編輯AI,而不需要改動AI框架代碼。實施的時候,可以策划設計好行為樹結構,程序填寫Condition和Action即可;甚至可以做到代碼完全不動,程序預先寫好各種不同的Condition和Action供策划選用即可。
-------------------------------
在Unity中我們如何實現和應用行為樹呢?
以下為大家介紹[可視化插件] Behavior Designer 1.6.1 - 行為模式設計專用插件
Behavior Designer提供了一個功能強大的API,使您可以輕松創建新任務。它還提供了一個直觀的可視化編輯器,包含數百個任務和PlayMaker / uScript集成,可以創建復雜的AI而無需編寫任何代碼!
行為設計師從一開始就設計得盡可能高效。因此,它在包括移動設備在內的所有平台上運行良好。它適用於Unity。
特征:
- 直觀的可視化編輯器
- 功能強大的API
- 可視運行時調試器
- 在任務之間進行通信的變量
- 有條件的中止
- 將現有代碼與反射任務一起使用
- 數以百計的任務
- 沒有額外的資產文件或編譯步驟
- 二進制或JSON序列化
- 包括運行時源代碼
- 豐富的文檔和教程視頻
- 在線提供示例項目
- 和更多
點擊下載 提取碼:2ave
需要繼續進行行為樹插件Behavior Designer的學習,可觀看下面的視頻教程講解
目錄
共24講,格式MP4,大小3GB,帶素材
掃碼時備注或說明中留下郵箱
付款后如未回復請至https://shop135452397.taobao.com/
聯系店主