UE4行為樹的深度研究

一、UE4行為樹太弱

Behavior Tree (行為樹)是UnrealEnigne4(簡稱UE4)非常重要的一部分。它提供了一種直觀且易於理解的方式來管理AI,是UE4引擎中最重要的AI系統之一。也正因為如此,很多人都會認為UE4行為樹的表現太弱,無法應對複雜的AI邏輯,而需要通過複雜的CPP代碼才能實現玩家期望的邏輯。例如,在動作遊戲中,怪物AI往往需要跳、閃避、近戰、遠程攻擊等能力,但是由行為樹實現這些能力時則相對簡單。

那麼,如何彌補UE4行為樹的不足呢?

二、UE4行為樹Sequence

UE4的行為樹內建有Sequence節點,它可以使多個子節點的行為按順序執行。使用Sequence的好處在於可以充分利用行為樹的自定義功能,同時又能夠獲得加強的流程控制,而不是把所有內容都編寫在一個節點中。 比如,如果創建一個AI,使其在發現主角後進入警戒狀態,然後開始向主角移動,最後攻擊主角,使用Sequence節點能夠優化行為樹,分步驟控制AI的行動。

Action - Guard  (警戒)
    |
Action - MoveTo  (移動)
    |
Action - Attack  (攻擊)

三、UE4行為樹服務

UE4行為樹提供了Service節點。Service節點可以在其它節點運行時執行,它可以用於更新黑板的數據、判斷玩家離AI的距離、檢查某個時間是否已經到達或監控其它節點。比如,我想要一個「持續且自適應」的尋路行為,我可以用一個Service節點來實現,使得它可以持續更新目的地坐標。

Action - MoveTo
    |
Service - UpdatePosition

四、UE4行為樹未激活

一個常見的問題是:如果多個AI使用同一個行為樹,當某個AI不需要執行行為時,如何禁用它的行為?UE4行為樹內建的Decorator節點可以解決這一問題。通過使用Decorator節點,我們可以把條件邏輯與行為樹分離開來,以此實現行為的自動化管理。比如下面這個例子中,將AI的生命值與一個判斷節點相連,從而使AI在生命值較低時停止執行攻擊行為:

Decorator - CheckHealth
    |
Action - Attack

五、UE4行為樹裝飾器

Decorator節點的另一個功能是用於修飾其它節點。比如我想讓行為樹僅在指定時間內運行,則可以使用裝飾器節點。裝飾器節點通過在其它行為樹節點周圍添加額外邏輯,實現了行為樹的重用,從而加速了行為樹的開發。比如我想設置AI只在晚上進行秘密行動,可以使用Sleep Decorator,來睡眠等待時間到達。

Decorator - Sleep
    |
Action - MoveTo

六、UE4行為樹都有什麼

在UE4中,Behavior Tree有以下幾種節點:

  • Composite: 根節點,也稱為插件節點,用於組合子節點
  • Decorator: 在Behavior Tree的節點周圍添加額外邏輯,代表着建立在其它節點上的條件邏輯
  • Service:在Behavior Tree運行時執行,可以更新黑板或監控其它節點狀態
  • Action:是所有節點的基礎動作,代表着行為樹的基本單位
  • Subtree: Behavior Tree的一個特殊節點,它可以在一個行為樹中包含另一個行為樹

七、UE4行為樹黑板更新頻率

UE4行為樹的黑板通常會用於傳遞數據和狀態。一旦一個值改變,所有使用該值的節點都會立即收到更新。但如果使用過於頻繁,則會影響遊戲性能,導致出現卡頓等問題。所以需要選擇合適的黑板更新頻率,以充分發揮行為樹的性能,同時又能夠保持遊戲的流暢度。

UE4行為樹內置了兩個黑板範圍:

  • 只在執行Behaviour Tree期間可見,且所有節點均可見
  • 大本地和全局使用,支持在許多不同的地方訪問

八、UE4行為樹任務節點執行次數

在Behavior Tree中,任務節點是執行行為的基本單元。不同的任務節點會執行不同的行為,例如處理輸入數據、執行運算、移動等。一個任務節點可能只執行一次,可能執行多次,所以我們需要了解不同任務節點的執行次數,以便於更好的控制行為樹。

在UE4中,Behavior Tree中的任務節點可以執行以下操作:

  • 只執行一次,並返回結果
  • 永久執行,直到恆定只返回
  • 執行一定次數(通常是隨機或時間限制),並返回結果
  • 以某種頻率循環執行任務,返回結果

九、UE4行為樹尋路到跟前然後攻擊

在UE4中,行為樹有很多用途,其中一個常用的用途是為AI提供自動化控制。例如,我們可以用UE4的行為樹構建一個簡單的打鬥系統,讓AI之間進行戰鬥。

在行為樹中,可能需要使用序列節點,使多個行為按照規定的順序執行。例如在下面的序列節點中,我們可以讓AI先尋路到玩家位置,然後開始攻擊。

Composite - Sequence
    |
Action - MoveTo
    |
Action - Attack

結束語

UE4行為樹是一種非常方便的工具,它可以提高遊戲開發的效率,同時還能通過不斷優化和完善,加強遊戲的表現力。在這篇文章中,我們從多個方面對UE4的行為樹進行了介紹和講解,希望對大家有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/180279.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-22 05:12
下一篇 2024-11-22 05:12

相關推薦

  • 深度查詢宴會的文化起源

    深度查詢宴會,是指通過對一種文化或主題的深度挖掘和探究,為參與者提供一次全方位的、深度體驗式的文化品嘗和交流活動。本文將從多個方面探討深度查詢宴會的文化起源。 一、宴會文化的起源 …

    編程 2025-04-29
  • 如何使用Python刪除某一列連續多行為空的數據?

    Python是一種強大的編程語言,有着廣泛的應用領域,特別是在數據處理方面。本文將介紹如何利用Python刪除某一列連續多行為空的數據。 一、什麼是連續多行為空的數據? 在數據處理…

    編程 2025-04-28
  • Python下載深度解析

    Python作為一種強大的編程語言,在各種應用場景中都得到了廣泛的應用。Python的安裝和下載是使用Python的第一步,對這個過程的深入了解和掌握能夠為使用Python提供更加…

    編程 2025-04-28
  • Python遞歸深度用法介紹

    Python中的遞歸函數是一個函數調用自身的過程。在進行遞歸調用時,程序需要為每個函數調用開闢一定的內存空間,這就是遞歸深度的概念。本文將從多個方面對Python遞歸深度進行詳細闡…

    編程 2025-04-27
  • Spring Boot本地類和Jar包類加載順序深度剖析

    本文將從多個方面對Spring Boot本地類和Jar包類加載順序做詳細的闡述,並給出相應的代碼示例。 一、類加載機制概述 在介紹Spring Boot本地類和Jar包類加載順序之…

    編程 2025-04-27
  • 深度解析Unity InjectFix

    Unity InjectFix是一個非常強大的工具,可以用於在Unity中修復各種類型的程序中的問題。 一、安裝和使用Unity InjectFix 您可以通過Unity Asse…

    編程 2025-04-27
  • 深度剖析:cmd pip不是內部或外部命令

    一、問題背景 使用Python開發時,我們經常需要使用pip安裝第三方庫來實現項目需求。然而,在執行pip install命令時,有時會遇到「pip不是內部或外部命令」的錯誤提示,…

    編程 2025-04-25
  • 動手學深度學習 PyTorch

    一、基本介紹 深度學習是對人工神經網絡的發展與應用。在人工神經網絡中,神經元通過接受輸入來生成輸出。深度學習通常使用很多層神經元來構建模型,這樣可以處理更加複雜的問題。PyTorc…

    編程 2025-04-25
  • 深度解析Ant Design中Table組件的使用

    一、Antd表格兼容 Antd是一個基於React的UI框架,Table組件是其重要的組成部分之一。該組件可在各種瀏覽器和設備上進行良好的兼容。同時,它還提供了多個版本的Antd框…

    編程 2025-04-25
  • 深度解析MySQL查看當前時間的用法

    MySQL是目前最流行的關係型數據庫管理系統之一,其提供了多種方法用於查看當前時間。在本篇文章中,我們將從多個方面來介紹MySQL查看當前時間的用法。 一、當前時間的獲取方法 My…

    編程 2025-04-24

發表回復

登錄後才能評論