qteewidgetitem添加子节点_行为树的节点
一,行為樹幾大節(jié)點:
- Root節(jié)點:只能有一個子節(jié)點,并且該節(jié)點必須是“ 復合”節(jié)點。不能將任何Decorator或Service附加到Root,在root可以指定其黑板資源;
- Task節(jié)點:行為樹的葉子節(jié)點,可以附加Decorator或Service節(jié)點。定義的是AI所執(zhí)行的任務,例如移動到某個點或者是執(zhí)行攻擊等等,不參與決策行為;Task可以執(zhí)行失敗或成功 ,且只有返回了執(zhí)行結果Task才會結束,執(zhí)行下一步?jīng)Q策,在藍圖中即調用FinishExecute函數(shù)返回結果;在擴展的Task中最終會調用OnTaskFinish; Task可以具有參數(shù),參數(shù)可以是硬編碼值或Blackboard Key引用,即Task可以通過設定不同參數(shù),達到復用的效果;
引擎附帶了一些內置Task:
- FinishWithResult: 強制任務立即為此任務返回完成結果(Fail或Succeed)。
- MakeNoise:產(chǎn)生感知系統(tǒng)噪聲的刺激。
- MoveDirectlyToward:移動到某地,與Moveto區(qū)別在于,忽略導航數(shù)據(jù)。
- MoveTO:通過導航移動到某點,當?shù)竭_某點,返回成功,如果導航失敗將返回失敗。
- PlayAnimation:此節(jié)點播放動畫。一般不建議使用,行為邏輯應該與動畫層分離;
- PlaySound:此節(jié)點播放聲音。
- Push Pawn Action:添加Pawn Action執(zhí)行 (ue4 AI模塊的Action系統(tǒng))。
- RotatetoFaceBBEntry:旋轉AI朝向指定的Blackboard的某個值。
- RunBehavior:將另一個行為樹作為一個整體子樹運行;
- RunBehaviorDynamic:與上面一致,但是可以指定運行時的子樹;
- RunEQSQuery:執(zhí)行EQS查詢,查詢結果存儲在Blackboard中,并返回Task結果。
- Wait:等待一段時間的Task,可以設置偏移隨機,使得每次等待時間不一樣。
- WaitBlackboardTime:跟上一個功能一致,時間是從Blackboard上讀取。
3. Composite節(jié)點
Composite節(jié)點是行為樹的決策能力,共有三種復合節(jié)點:Selector,Sequence和Simple Parallel。您將發(fā)現(xiàn)通過使用Selectors和Sequences的組合,它們的工作方式如下:
- Selectors:節(jié)點將嘗試查找其子節(jié)點中的一個來執(zhí)行,找到一個分支或一個任務。執(zhí)行。,從最左側的子節(jié)點開始嘗試執(zhí)行。如果任務執(zhí)行失敗或整個分支失敗,則嘗試下一個,依此類推。如果其中一個子級返回Success,表示任務已完成或整個分支已完成,那么Selectors將返回成功的結果給父節(jié)點,并不再執(zhí)行之后的節(jié)點。如果Selector的所有子級都返回失敗,則Selector返回失敗的結果給父節(jié)點。
- Sequences:節(jié)點的工作方式與Selectors的相反。要向其父節(jié)點返回成功,必須所有Sequence的子項都必須返回成功。從左向右執(zhí)行,如果其中一個節(jié)點執(zhí)行成功,依次向下執(zhí)行,知道全部執(zhí)行成功。如果子節(jié)點執(zhí)行失敗,則返回失敗,且不再執(zhí)行后面的節(jié)點;
- Simple Parallel:為簡單并行節(jié)點,通常用來處理并發(fā)行為。運行執(zhí)行兩個子節(jié)點:一個必須為task節(jié)點A,另一個為一個分支樹B。可以理解為,如果執(zhí)行A任務,那么B也會執(zhí)行,A是首要任務,B是次要任務。如果主Task失敗,則返回失敗,但如果主主Task成功,則返回成功。根據(jù)其設置,簡單并行完成主Task后,可以等待直到子樹執(zhí)行結束,也可以直接向主節(jié)點報告成功或失敗,并停止執(zhí)行子樹。
4.Deocrator節(jié)點
Deocrator節(jié)點可以附加到“ Composite”或“ Task”節(jié)點。裝飾器節(jié)點決定是否可以執(zhí)行行為樹中的分支甚至單個節(jié)點。從本質上講,它們是一個條件。可以來控制行為樹執(zhí)行流的打斷和跳轉。Decorator的ObserverAborts選項值控制其所發(fā)揮的作用,當用作條件判斷時,ObserverAborts值為None。此時若Decorator節(jié)點的判斷條件滿足,則會執(zhí)行其所附著的復合節(jié)點或Task節(jié)點,反正則不執(zhí)行。另外,Decorator節(jié)點還有一個InverseCondition選項,其作用是另判斷條件反轉。當我們需要自定義裝飾器節(jié)點時,需要在節(jié)點的CalculateRawConditionValue()里編寫條件判斷邏輯。
ObserverAborts值不為None時,可實現(xiàn)中斷正在執(zhí)行的任務:
1)值為Self時,當條件不滿足時,可以中斷所在節(jié)點的任務和子任務,執(zhí)行比所在節(jié)點優(yōu)先級更低的任務和子任務;
2)值為LowPriority時,當條件滿足時,可以中斷比所在節(jié)點優(yōu)先級更低的任務和子任務,執(zhí)行所在節(jié)點的任務和子任務;
3)值為Both時所在節(jié)點和低優(yōu)先級節(jié)點都會被中斷。
這是虛幻引擎中內置Decorator的列表:
- Blackboaed: 檢查是否在特定的鍵 黑板是否設置。
- CheckGameplayTagsOnActor:檢查Blackboard指定的Actor上是否存在特定的Gameplay標記。
- CompareBBEntries:比較兩個Blackboard值,并檢查它們是否相等。
- Composite:可以使用布爾邏輯一次組合不同的Decorator。放置此Decorator后,可以通過雙擊打開它的編輯器。可以使用布爾運算符和其他Decorators構建。
- ConditionalLoop:只要滿足條件,它將不斷循環(huán)遍歷子樹。
- ConeCheck:檢查一個點是否在圓錐中,從另一個點開始;錐角和方向可以設置。
- Cooldown:一旦執(zhí)行從包含此Decorator的分支中退出,冷卻計時器將啟動,并且此Decorator不允許該執(zhí)行再次進入,直到該計時器結束;
- DoesPath:是否使用導航系統(tǒng),并檢查特定點的路徑是否存在。
- DoesPath:是否使用導航系統(tǒng),并檢查特定點的路徑是否存在。
- ForceSuccess:無論是否從下面報告了失敗還是成功,它都會強制子樹的成功
- IsatLocation:檢查Pawn是否在特定位置。
- IsBBEntryofclass:它檢查特定的Blackboard Entry是不是特定的Class。
- KeepinCone:與錐體檢查類似,檢查觀察者是否在錐體內。
- Loop:會在子樹中循環(huán)特定次數(shù)。
- SetTagCoolDown:類似于其同義任務Task,更改特定標簽的冷卻時間。
- Tag Cooldown:與Cooldown節(jié)點相同,但是它具有與Tag關聯(lián)的計時器。結果,可以通過“設置標簽冷卻”任務和“設置標簽冷卻”裝飾器來更改此計時器。
- TimeLimit:它為子樹完成執(zhí)行提供了時間限制。超過用時,此Decorator將停止執(zhí)行并返回 失敗。
4.Service節(jié)點
Service節(jié)點被設計成用來更新AI“知識”的task節(jié)點的“后臺”。
Service可以附著在復合節(jié)點或者task節(jié)點上,當Service節(jié)點下面的分支被激活時Service節(jié)點會被執(zhí)行。
但與task節(jié)點不同,Service節(jié)點不會有任何返回值,也不會直接影響執(zhí)行流程。
通常,它們通過Tick定期檢查并向黑板中存儲結果。
主要屬性:
1)Interval Tick時間間隔;
2)RandomDeviation Interval的隨機偏差;
3)bCallTickOnSearchStart控制初始時調用TickNode。
Service節(jié)點附加到Composite或Task節(jié)點,并將如果執(zhí)行其分支,執(zhí)行多少個父級子級都沒有關系,Service節(jié)點也將運行。以下截圖可以直觀地看到這一點:
總結
以上是生活随笔為你收集整理的qteewidgetitem添加子节点_行为树的节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有哪些好用的平民神宠?
- 下一篇: 上海欢乐谷开放时间表