日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lua Behavior Tree For Unity3D(Lua描述行为树For Unity3D)

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua Behavior Tree For Unity3D(Lua描述行为树For Unity3D) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄點擊展開[+]

行為樹(BTTree)筆記
為什么是Lua版本的行為樹

目前國內的手機游戲都標配熱更新功能,而游戲AI自然也是MMO游戲的一個標配,比如說掛機的AI,寵物的AI等等。

說起如何用更簡單的方式開發AI功能,大家都會想到使用狀態機或行為樹,它們能很大程度上幫助我們理清思維邏輯,讓AI變的更加有趣生動。

目前很多Unity3D項目都是把Lua做為腳本語言,比如我們項目就是Lua做邏輯開發的3DMMOARPG的游戲,本文分享一下我們項目中使用的Lua版本行為樹。

behavior3

Behavior3框架提供了一組工具和開放規范,為您創建、設計和使用行為樹應用于游戲、模擬、機器人和其他基于代理應用程序。

提供在線可視化地編輯器,并且提供編輯器源代碼,你可以下載后部署到本地,并且擴展它功能。
多代理體系結構,遵循一個簡單而強大的架構在一個正式的和一致的基礎上,優化控制多個代理
使用一個開放的和簡單的格式來描述行為樹(json),因此您可以很容易地把它加入到自己的庫,工具或框架中

behavior3官網:http://behavior3.com/

behavior3的lua版本 :https://github.com/nottvlike/behavior3lua

注:本文部分截圖和behavior3官網或github的lua版本有出入,因為我們項目組對lua版本的behavior3的做過修改。

編輯器

瀏覽器訪問:http://editor.behavior3.com/#/dash/projects

選擇Project - New Project - 輸入Name - 點擊 Editor ,網站會對當前瀏覽器編輯的數據進行保存,無需注冊登錄就在在線編輯自己的行為樹。

image

導入已有的行為樹

選擇 Project - Import - Tree as Json,粘貼AI.json數據,完成由Json數據導入成行為樹

導出行為樹

選擇 Project - Export - Tree as Json,選擇全部內容并復制,粘貼到AI.json,完成由AI樹轉換成Json數據

行為樹基礎知識

請提前了解行為樹的基礎概念,我列幾點:

每一幀都會遍歷所有的節點 (從性能角度可以每邏輯幀遍歷一次)

執行順序:從上往下,從左往右

Composites(所有可用的類型)
下面以實現一個簡單的寵物AI來解釋各節點的用法。注:我列出的節點類型解釋和使用方法是根據自己的理解所寫,并非官方文檔的解釋。

BTPrioritySelector(優先選擇)

如果當前節點的前置條件沒有,則置空。

對于最上層的頂節點,可以使用它

BTSequence(序列)

如果并行節點有多個子節點,同級的節點中,上一個返回true,下一個節點才會執行。

示例:與主人距離大于18這個節點為序列節點,有兩個葉子節點,當ClearBattleState返回True,TeleportToMaster才會被執行

image

而只有序列節點的所有葉子節點都返回true,這個節點才算執行結束,才會進入下一個節點

BTParalled(并行)

BTParableFlexible(散列)

Actions(動作/執行函數)

放在最末端的葉子節點上,用于執行函數

可以給它添加前置條件(isFarFromMaster()) ,給函數傳參數(DoFollowMaster(sqrDistance = 4)),示例:

image

給方法傳參數

如果在行為樹給方法傳遞多個參數,在lua端如何接受傳遞的參數呢?

在lua的方法中:使用p.參數名1,p.參數名2,獲取相應位置的參數

在Unity3D中調試行為樹
我們目前是在C#端結合Unity開放的編輯器接口,編寫了GizmosHelper,便于在運行時對行為樹進行調試。

主要原理:

讀取AI.jso的數據,獲取節點坐標、標題,由點連線,線組成樹狀,還原成在behavior編輯器的樹狀

如果某個節點及其子節點的狀態為Active,這條線使用綠色畫,否則使用白色畫。

注意事項

在你還大不熟悉行為樹的情況下,最好不要為Sequence或Parallel的子結點加前置條件,而是直接加在Sequence或Parallel結點本身上面。。。

前置條件可以大量用在Priority結點或其子結點上
這樣樹的邏輯會清晰一點
另外,前置條件支持以“!”開頭,表示對緊跟在其后面的條件進行取反再判斷

本文出自趙青青,原文鏈接:http://www.cnblogs.com/zhaoqingqing/p/7258898.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的Lua Behavior Tree For Unity3D(Lua描述行为树For Unity3D)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。