Behavior Designer 基礎(chǔ)教程

  1. 當(dāng)AI足夠復(fù)雜的時(shí)候 我發(fā)現(xiàn)此時(shí)的FMS已經(jīng)被寫成了一片代碼的泥沼骨杂,想要繼續(xù)維護(hù)下去已經(jīng)是很乏力了
  2. 當(dāng)我們使用Unity自帶的動(dòng)畫狀態(tài)機(jī)系統(tǒng)后,變成了這樣 下圖 ,當(dāng)然你想改也不是不可以或許是個(gè)體力活咕缎,但是我想告訴你,你的隊(duì)友可能在某些動(dòng)畫之中安插了一些 被稱為 動(dòng)畫幀事件 的東西料扰,而這種東西則需要你一個(gè)一個(gè)選中并且查看動(dòng)畫文件是否被更改凭豪,量一旦大了換一個(gè)人接手那就是“不可能實(shí)現(xiàn)的任務(wù)”


    動(dòng)畫狀態(tài)機(jī)

基本概念

Composites
這里的"組合" 全名應(yīng)該被成為“組合節(jié)點(diǎn)控制(管理)類目”,顧名思義在此條目下若干個(gè)選項(xiàng)都被稱之為“控制類節(jié)點(diǎn)”晒杈,用以從最高的緯度去規(guī)范行為樹的流程嫂伞。具體細(xì)分為如下幾種

Parallel 并行節(jié)點(diǎn)    此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)將一起進(jìn)行,其中某一個(gè)執(zhí)行返回false 則Parallel節(jié)點(diǎn)返回false
Parallel Selector 并行選擇節(jié)點(diǎn)    此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)只要有一個(gè)返回success拯钻,則Parallel Selector節(jié)點(diǎn)返回success     
    注意: 以上二節(jié)點(diǎn)都是并行的帖努,也就是說同時(shí)執(zhí)行所有下屬節(jié)點(diǎn)

Proiorty Selector 優(yōu)選選擇節(jié)點(diǎn)    此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)依次執(zhí)行直到返回success
Random Selector 隨機(jī)選擇節(jié)點(diǎn)    此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)隨機(jī)執(zhí)行直到其中某一個(gè)返回success
Ramdom Sequence 隨機(jī)選擇列隊(duì)節(jié)點(diǎn)    此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)隨機(jī)執(zhí)行直到其中一個(gè)返回false
Selector 選擇節(jié)點(diǎn)   此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)依次執(zhí)行直到返回true
Selector Evaluator 計(jì)算選擇節(jié)點(diǎn)(姑且這樣叫把,這個(gè)名詞翻譯的優(yōu)點(diǎn)拗口)    此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)依次執(zhí)行直到返回success粪般,有一種情況使其返回running狀態(tài)并中斷拼余,就是有節(jié)點(diǎn)被打勾了

Sequence 順序節(jié)點(diǎn) 此節(jié)點(diǎn)下屬所有節(jié)點(diǎn)依次執(zhí)行直到返回false

Decorators
裝飾節(jié)點(diǎn)應(yīng)為Composites的分支節(jié)點(diǎn),而裝飾節(jié)點(diǎn)一般用來修飾判斷亩歹,比如這個(gè)修飾可以是 “直到...成功”匙监,“直到...失敗”

    Conditional Evaluator   條件計(jì)算節(jié)點(diǎn)  此節(jié)點(diǎn)下屬節(jié)點(diǎn)執(zhí)行直到返回success寡润,有一種情況使其返回running狀態(tài)并中斷,就是有節(jié)點(diǎn)被打勾了
    Interrupt 中斷(開關(guān))節(jié)點(diǎn) 此節(jié)點(diǎn)第一次執(zhí)行為true第二次為false 
    Inverter 逆變節(jié)點(diǎn) 此節(jié)點(diǎn)的子節(jié)點(diǎn)如返回success他可將結(jié)果改為false反之也可
    Repeater 重復(fù)節(jié)點(diǎn)    此節(jié)點(diǎn)可設(shè)置該節(jié)點(diǎn)下子節(jié)點(diǎn)重復(fù)執(zhí)行的次數(shù)
    Return Failure / Return Success  我就不解釋了
    Task Guard Task意為任務(wù)Guard意為守衛(wèi)舅柜,那么這個(gè)節(jié)點(diǎn)是告訴我們可以用他來限定該節(jié)點(diǎn)的子節(jié)點(diǎn)不能同時(shí)被兩項(xiàng)或以上的任務(wù)訪問,換而言之該節(jié)點(diǎn)可以設(shè)置它的子節(jié)點(diǎn)能同時(shí)被幾個(gè)任務(wù)(其余的節(jié)點(diǎn))訪問躲惰,類似于多線程訪問統(tǒng)一資源我們所使用的Lock致份。
    Until Fuilure /  Until Success 直到...返回false/知道...返回Success 這兩項(xiàng)我想也沒有必要說明了,但看字面上的意思足夠說明一切了础拨。

Actions
動(dòng)作或行為氮块,如“攻擊” “追逐”

    Action有三大類,第一類為基礎(chǔ)的API诡宗,第二類為基本的Monobehavior操作 如Animator滔蝉,Animation,Behavior 等等塔沃,第三類為輔助API 都是使用反射處理蝠引,當(dāng)然這個(gè)大類隱含著性能的損耗要謹(jǐn)慎使用
    此處僅選必要的API解釋,其余的相信你可以看懂
    Behavior Tree Reference 此節(jié)點(diǎn)允許此節(jié)點(diǎn)的腳本中重寫GetExternalBehaviors方法蛀柴,也就是你可以在運(yùn)行時(shí)指定一個(gè)行為樹在當(dāng)前節(jié)點(diǎn)下運(yùn)行螃概!(動(dòng)態(tài)指定行為樹)
    Preform Interuption 此節(jié)點(diǎn)允許用戶中斷在節(jié)點(diǎn)列表中添加的任務(wù)(可以有很多任務(wù))
    Restart Behavior Tree 重啟行為樹

Stop Behavior Tree 終止行為樹
另外 Action 一般我們程序需要擴(kuò)展給策劃配置 后文將提到如何自行擴(kuò)展Action。
Conditionals
用于條件對(duì)比鸽疾,例如 “是否為空” “是否是處于某狀態(tài)” “是否接收到消息” “是否等于某數(shù)值”

    作為行為樹組建中最容易理解的Conditionals吊洼,在其基本API中大多以 "Is has XXX" 開頭,顧名思義即可

如何擴(kuò)展(程序)
創(chuàng)建一個(gè)自定義行為(Action)或是節(jié)點(diǎn)

    相關(guān)文檔

http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=5
使用運(yùn)行時(shí)(Runtime)設(shè)置的數(shù)值
在編輯器中設(shè)置的數(shù)值有兩種一種是在使用功能性節(jié)點(diǎn)的時(shí)候節(jié)點(diǎn)中需要預(yù)設(shè)的數(shù)值制肮,另一種是全局可訪問到的數(shù)值

添加wait節(jié)點(diǎn)的暫停時(shí)間

添加全局可訪問的數(shù)值

非運(yùn)行時(shí)可以使用剛才設(shè)置的float數(shù)值

當(dāng)然也可使用全局?jǐn)?shù)值
    說完了使用編輯器訪問數(shù)值現(xiàn)在該使用運(yùn)行時(shí)動(dòng)態(tài)獲取這些數(shù)值了冒窍,代碼很簡單
    相關(guān)文檔  

http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=54

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市豺鼻,隨后出現(xiàn)的幾起案子综液,更是在濱河造成了極大的恐慌,老刑警劉巖儒飒,帶你破解...
    沈念sama閱讀 211,423評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件意乓,死亡現(xiàn)場離奇詭異,居然都是意外死亡约素,警方通過查閱死者的電腦和手機(jī)届良,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圣猎,“玉大人士葫,你說我怎么就攤上這事∷突冢” “怎么了慢显?”我有些...
    開封第一講書人閱讀 157,019評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵爪模,是天一觀的道長。 經(jīng)常有香客問我荚藻,道長屋灌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,443評(píng)論 1 283
  • 正文 為了忘掉前任应狱,我火速辦了婚禮共郭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疾呻。我一直安慰自己除嘹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評(píng)論 6 385
  • 文/花漫 我一把揭開白布岸蜗。 她就那樣靜靜地躺著尉咕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪璃岳。 梳的紋絲不亂的頭發(fā)上年缎,一...
    開封第一講書人閱讀 49,798評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音铃慷,去河邊找鬼晦款。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枚冗,可吹牛的內(nèi)容都是我干的缓溅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,941評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼赁温,長吁一口氣:“原來是場噩夢啊……” “哼坛怪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起股囊,我...
    開封第一講書人閱讀 37,704評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤袜匿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后稚疹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體居灯,經(jīng)...
    沈念sama閱讀 44,152評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評(píng)論 2 327
  • 正文 我和宋清朗相戀三年内狗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怪嫌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,629評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柳沙,死狀恐怖岩灭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赂鲤,我是刑警寧澤噪径,帶...
    沈念sama閱讀 34,295評(píng)論 4 329
  • 正文 年R本政府宣布柱恤,位于F島的核電站,受9級(jí)特大地震影響找爱,放射性物質(zhì)發(fā)生泄漏梗顺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評(píng)論 3 313
  • 文/蒙蒙 一车摄、第九天 我趴在偏房一處隱蔽的房頂上張望寺谤。 院中可真熱鬧,春花似錦练般、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泵琳,卻和暖如春摄职,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背获列。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評(píng)論 1 266
  • 我被黑心中介騙來泰國打工谷市, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人击孩。 一個(gè)月前我還...
    沈念sama閱讀 46,333評(píng)論 2 360
  • 正文 我出身青樓迫悠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巩梢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子创泄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容