行为树
行為樹
?
行為樹常被用來實現游戲中的AI。每次執行AI?,都會從根節點遍歷整個樹,父節點執行子節點,子節點執行完后將結果返回父節點。下面是基本的四個節點:
?
1 *順序節點(Sequence):屬于組合節點,順序執行子節點,只要碰到一個子節點返回false,則返回false,否則返回true,類似于程序中的邏輯與。 2 *選擇節點(Selector):屬于組合節點,順序執行子節點,只要碰到一個子節點返回true,則返回true,否則返回false,類似于程序中的邏輯或。 3 *條件節點(Condition):屬于葉子節點,判斷條件是否成立。 4 *執行節點(Action):屬于葉子節點,執行動作,一般返回true。?
?
關于更多關于行為樹概念上的東西,大家很容易找到相關的資料,這里不再最贅述,主要是通過一個實際的例子來看行為樹在AI上的應用。
?
這是AI文字表達的方式:
?
?
如果不是情人節,我們的Avatar將去球場打球,如果是情人節,他將帶上一束花去見他的女友,但是他可能沒帶錢,所以他要先回家拿錢,然后去花店買花,再去 見他的女友,如果女友還在約會地點,則將花送給女友。?
下面是用行為樹表達的方式:
?
?
上面的圖讓我們能很容易指導我們的代碼編寫,我們需要完成所有的葉子節點,然后將他們按照圖示,放到相應的組合節點中去,然后不停的遍歷整個行為樹。
?
我使用AS3完成了下面的demo,去實現上圖中的行為樹AI(如無法觀看請下載最新的FlashPlayer)。
?
在Flash中,藍色的圓表示AI控制的Avatar,你可以通過點擊不同選擇框來改變當前的條件,Avatar會根據條件做出不同的反應。
行為樹很適合做AI編輯器,我們定義好一些條件和動作,策劃人員通過簡單的拖拽和設置即可實現復雜的游戲AI。
轉載于:https://www.cnblogs.com/VindyLeong/p/4480081.html
總結
- 上一篇: 读经典——《CLR via C#》(Je
- 下一篇: 字符串去掉空格 trim()方法