UE4 AI BehaviorTree 各個節點執行順序總結


一個游戲DEMO的AI部分

用到行為樹組件如上

主要說一下這兩個組件

 一個裝飾(類似過濾器) 一個服務(代碼邏輯與Blackboard交互)

 

Service分為 大碰撞 和 小碰撞 兩個碰撞范圍, 大碰撞用來跟蹤, 小碰撞用來中斷跟蹤開始攻擊

 

 IsTarget檢查

 

大碰撞 

 

小碰撞

 

執行間隔

 

執行結果關鍵部分截取

看出問題了么?

我的角色在抽筋似的反復轉向

 

原因就是因為Service的執行時間是根據設置的那個間隔來的, 而跟行為樹的輪播調用沒有關系

行為樹開始新一輪執行,如果此時跟上一輪的間隔時間沒有到設置的時間,Service是不會執行的

但是如果行為樹執行到一半,Service的時間間隔到了,那么Service也是會立刻執行的

 

所以原代碼中, 我在Service里面直接修改了Blackboard的內容

恰好行為樹執行到一半, 讀取到我修改的值, 導致AI本來向player移動的, 變為了向NPC移動

然后因為我有player first原則, Blackboard的值又立刻變為了player, 導致AI在原地不停的轉向

 

改進后代碼 大碰撞

臨時變量用來存放循環時的值, 這樣在循環的時候不會更改黑板的值, MoveTo在取值的時候就不會被這邊的循環干擾

角色就不會在游戲中抽筋似的反復轉向


免責聲明!

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



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