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