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