行爲樹(BehaviorDesigner)插件(2)--行爲樹節點

最簡單的行爲樹是任務的集合,這些任務我們可以把它理解爲行爲樹中的一個一個的節點。
有四種不同類型的任務:Action(動作任務)、Conditional(條件任務)、Composite(複合任務)和 Decorator(裝飾任務)。
一、Action(動作任務):它們以某種方式改變了遊戲的狀態,比如主角的某個動作,可以作爲主角行爲樹上一個動作任務。

二、Conditional(條件任務):條件任務測試遊戲的某些屬性。例如(下圖),在人工智能代理上面的行爲樹中有兩個條件任務和兩個動作任務。前兩個有條件的任務檢查是否有敵人在特工的視線範圍內,然後確保特工足夠的子彈發射他的武器。如果這兩個條件都爲真,則兩個操作任務將運行。其中一個動作任務發射武器,另一個任務扮演播放動畫。當你形成不同的子樹時,行爲樹的真正力量就會發揮作用。兩個射擊動作可以形成一個子樹。如果其中一個先前的條件任務失敗後,可以生成另一個子樹來執行一組不同的動作任務,例如逃離敵人。可以將子樹分組到相互超越,形成高層次的行爲。


三、Composite(複合任務):是包含子任務列表的父任務。
常用的有三種:
(1)Sequence (順序節點):  此節點下屬所有節點從左到右依次執行,直到所有子節點都返回true則返回true,否則返回false。有點像 “and”。     
(2)Selector (選擇節點):  節點下屬所有節點從左到右依次執行,直到所有子節點都返回false則返回false,否則只要有一個節點返回true則返回true。有點像 “or”。 
(3)Parallel (並行節點) :  此節點下屬所有節點將一起進行,其中某一個執行返回false 則Parallel節點返回false。
從上面的例子中,複合任務被標記爲序列和並行。一個序列任務運行每個任務一次,直到所有任務都運行完畢。它首先運行條件任務,檢查敵人是否在視線範圍內。如果敵人在視線範圍內,它就會
檢查代理是否還有子彈的條件任務。如果代理有足夠的子彈,那麼並行任務將運行,射出武器並播放
拍攝動畫。如果序列任務一次執行一個子任務,則並行任務將同時執行其所有子任務。

四、Decorator(裝飾任務):這種節點的功能是用來包裝另一個節點!(只能有一個子節點)。Decorators(修飾節點)將改變節點的行爲!例如:修飾節點可以在運行時控制子節點直到返回某個特定狀態(success 或者是 false)。後者是對子節點返回結果取反(即:success 返回 false,false,返回 success)。在上面的例子中,我們沒有使用decorator任務,但是如果你想阻止任務過早運行(稱爲中斷任務),你可能需要使用decorator任務。
例如,代理可以執行諸如收集資源之類的任務。它可能會有一箇中斷任務,如果敵人
在附近。decorator任務的另一個例子是重新運行它的子任務x次,或者decorator任務在子任務完成之前一直運行它。

說完了任務,那麼還有一點就是是任務的返回狀態。可能有的任務不止花費一幀去完成。
例如,大多數動畫不會在一幀內開始和結束。此外,條件任務需要一種方法來告訴其父任務是否
條件爲true,因此父任務可以決定是否繼續運行其子任務。使用任務狀態可以解決這兩個問題。三個任務中的一個
不同的狀態:運行、成功或失敗。在第一個示例中,只要拍攝動畫正在播放,拍攝動畫任務的任務狀態爲“運行”。這個
判斷敵人是否在視線範圍內的有條件任務將在一幀內返回成功或失敗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章