UE5-AI

AI角色

角色控制器

AI角色必須要一個角色控制器

角色控制器最基本只需要執行行為樹,在EventOnPossess后runBehaviorTree

如果要的是一個角色,可以創建一個Character,在類默認設置中可以找到

Pawn->AIControllerClass,在這里設置AI操控模式和AI控制器類(角色自帶移動組件,否則move to行為不起作用)

行為樹

行為樹是大腦,執行邏輯,數據存儲在黑板,所以創建行為樹同時也要創建黑板

設置AI的行為,判斷,分支Selector,執行Task,順序Sequence

根節點往下第一個只能接基礎3個節點,一般選Sequence或Selector

在Selector上可以套裝飾器(Decorator)或者服務(Service)

裝飾器:根據邏輯判斷當前節點是否執行

服務:當運行到當前節點的時候執行服務內的邏輯

服務

一個隨機找點的服務:

首先在行為樹界面最上方新建一個服務

重寫一個EventReceiveTickAI,這里簡單找個三維向量賦值給黑板

新建一個黑板變量

?使用Service:在行為樹節點上右鍵選中想要的服務即可

?裝飾器

最經常使用的就是使用黑板值來判斷是否執行該節點

在節點上右鍵選擇要使用的BlackBorad

?然后單機藍色的框(裝飾器),在右側面板上可以指定具體的黑板變量

這里選擇變量hasPlayer,當IsSet(設置有值或者為true)就執行

行為Task

?具體的執行節點,同時也是行為樹的最末端節點,

創建自定義Task

在行為樹面板頂部選擇NewTask

?在Task中重寫EventReceiveExecuteAI,記得一定執行FinishExecute

使用:直接拉出來選擇要執行的Task就行

黑板

負責記錄AI行為所需的數據,可以是任意類型數據

對黑板數據的讀取和修改跟普通的藍圖類不同

設置變量

需要先創建一個類型為BlackBoardKeySelector變量,再將變量設置為黑板值

比如設置一個在黑板中的三維向量變量

?

?獲取變量

EQS

代替大部分常用的服務和Task,例如找點移動等

創建

進入,根節點往下拉可以看到有很多可以執行的節點

例如隨機找點

可以選擇Points下的各種類型(生成不同形狀的查找范圍)

可以在右側面板設置生成點的范圍和密度數量等

在這個節點上可以套額外的限制

比如給一個角度限制

在節點上右鍵AddTest選擇dot(余弦)

?單擊dot可以選擇給生成的點打分篩選

打分可以在后面選點時參與,篩選則直接去除

我這里選擇只打分,并且只判斷平面,反向打分Inverse(這樣在身后的分最高)

判斷路徑是否可到達

AddTest->PathFinding

使用

完成的EQS可以直接在行為樹上使用,如作為Service套在節點上

或作為節點執行

選中節點同時在右側面板指定要執行的EQS類即可

中斷節點

當角色看到玩家或者其他的判斷條件需要我們放棄當前的操作時(比如moveTo,移動到一半直接去攻擊玩家之類的)

需要在分支或節點上添加一個裝飾器(或現有的可以滿足需求也可以)

在右側面板找到FlowControl

一般選擇當結果改變時,中斷自身(自身及下面的節點)

可以添加多個裝飾器判斷,只要一個滿足就會中斷

行為樹只有跟節點在亮,不進行其他操作

需要檢查所有的條件判斷是否有問題

在服務里面添加打印輸出,有時雖然Selector或Sequence上面的服務在執行,但是節點和線條并不會在閃爍,需要排查問題出現的節點位置和邏輯

添加wait節點分開其他節點來排查

其他邏輯

始終面朝玩家

通過一個task來實現面朝玩家的需求(tick需求)

但是task執行頻率是一次性,并且依賴行為樹的頻率,并不是完整的每幀執行

在task中重寫EventReceiveTickAI和EventReceiveExecuteAI

Execute是一開始執行,先獲取玩家(黑板值)和AI的轉向速度(自定義)

在Tick中不斷地比較目標旋轉和自身旋轉,使用RInterpTo來實現平滑數值過度,不能忘記finish

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23153.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23153.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23153.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 架構組件面試問答

1. 什么是 Android Architecture Components? 答: 組件是一組庫,可幫助您設計健壯、可測試且可維護的應用程序。它們提供了一種清晰且慣用的方式來使用 REST API。這些組件包括 Room、ViewModel、LiveData 等。 2. 什么是LiveData&#xff…

Java接口的變更過程

Java 接口相信所有學過 Java 的人一定都知道,而且 99% 的人一定都背過這個面試題:Java 接口和抽象類的區別是什么?答案都是什么接口方法不能有實現,都是抽象的,接口的方法都默認為 public 修飾等等之類的,這…

推箱子小游戲C++

推箱子是一款經典的益智游戲,玩家需要通過推動箱子來達到特定的目標。在C中實現這樣的小游戲需要考慮游戲邏輯、用戶輸入、圖形界面(如果需要的話)以及可能的關卡設計。 下面是一個簡單的推箱子游戲的實現框架: 定義游戲環境 創建…

DSP問題:CCS更改工程名導入報錯

1、問題現象 復制一個工程出來后,修改版本號,重新導入工程后報錯。 顯示項目描述無效。 2、問題原因 由于CCS無法通過工程描述中找到指定名字文件夾。使用記事本打開.project文件,里面的描述還是以前的文件夾名,所以導入時報…

Spring Boot 開發 -- 靜態資源配置詳解

一、引言 在開發Web應用程序時,靜態資源的管理和配置是一個重要的環節。Spring Boot框架為開發者提供了便捷的靜態資源配置方式,使得我們可以輕松地管理如HTML、CSS、JavaScript、圖片等靜態資源。本文將詳細介紹如何在Spring Boot項目中配置和管理靜態…

Innodb Buffer Pool緩存機制(三)Innodb Buffer Pool內部組成

一、控制塊緩存頁 Buffer Pool中默認的緩存頁大小和在磁盤上默認的頁大小是一樣的,都是16KB。為了更好的管理這些在Buffer Pool中的緩存頁,InnoDB為每一個緩存頁都創建了一些所謂的控制信息,這些控制信息包括該頁所屬的表空間編號、頁號、緩存…

Android基礎-AndroidManifest.xml詳解

在Android開發中,AndroidManifest.xml 文件是一個至關重要的組成部分,它位于應用的根目錄的 app/src/main/ 文件夾下。這個文件提供了Android系統和其他應用所需的所有關于應用的元數據信息。以下是對 AndroidManifest.xml 文件的詳細解析。 1. 文件結構…

[Vulfocus解題系列]spring 命令執行(CVE-2022-22947)

環境部署 使用docker部署環境 漏洞等級:高危 3 月 1 日,VMware 官方發布安全公告,聲明對 Spring Cloud Gateway 中的一處命令注入漏洞進行了修復,漏洞編號為CVE-2022-22947 Spring官方發布 漏洞描述 使用 Spring Cloud Gate…

javaweb—Vue

重點為&#xff1a;雙向數據綁定。 框架&#xff1a;是一個半成品軟件&#xff0c;是一套可重用的、通用的、軟件基礎代碼模型&#xff0c;基于框架進行開發&#xff0c;更加快捷&#xff0c;更加高效。 Vue快速入門 基礎框架&#xff1a; <!DOCTYPE html> <html lan…

【Python Cookbook】S01E20 fnmatch 模塊做字符串匹配

目錄 問題解決方案討論 問題 在不同的操作系統下&#xff0c;怎樣做字符串匹配&#xff1f; 解決方案 fnmatch() 模塊提供兩個函數&#xff0c;fnmatch() 以及 fnmatchcase() 可以用來執行做這樣的匹配。 from fnmatch import fnmatch, fnmatchcasematch_res fnmatch(foo.…

vue路由緩存

vue路由緩存 在業務場景中有時候需要頁面緩存不清空&#xff0c;那么就需要保留緩存(include為需要緩存&#xff0c;而exclude為不緩存&#xff0c;且優先級大于include) <KeepAlive> 是一個內置組件&#xff0c;它的功能是在多個組件間動態切換時緩存被移除的組件實例…

【java 為什么說 Synchronized 是非公平鎖?】

文章目錄 概要1. 非公平鎖的定義2. synchronized 作為非公平鎖的原因3. 非公平鎖的特點4. 如何實現公平鎖總結 概要 在Java中&#xff0c;synchronized 關鍵字用于實現同步&#xff0c;以確保在多線程環境下對共享資源的訪問是線程安全的。然而&#xff0c;synchronized 實現的…

03-3.1.2 棧的順序存儲的實現

&#x1f44b; Hi, I’m Beast Cheng&#x1f440; I’m interested in photography, hiking, landscape…&#x1f331; I’m currently learning python, javascript, kotlin…&#x1f4eb; How to reach me --> 458290771qq.com 喜歡《數據結構》部分筆記的小伙伴可以訂…

郵件地址搜索軟件

易郵件地址搜索大師  一、易郵件地址搜索大師特色 — 易郵件地址搜索大師是一款搜索郵件地址和手機號碼的軟件&#xff0c;可以按整站搜索&#xff0c;也可以按關鍵詞搜索。使用方法非常簡單和方便。 — “整站搜索”可以搜索有很多郵件地址的單一網站&#xff0c;主要用于…

Technart電動螺絲刀TN101控制器維修

Technart電動螺絲刀以其高效、穩定和精確的扭矩控制而聞名。然而&#xff0c;即使優質的產品&#xff0c;在長時間的使用下&#xff0c;也可能會出現TECHNART電動螺母扳手控制器故障。 常見故障及維修方法 1. 控制器不工作 癥狀&#xff1a;電動螺絲刀無法啟動&#xff0c;或啟…

Python怎么染色:深入探索Python中的文本和圖形著色技巧

Python怎么染色&#xff1a;深入探索Python中的文本和圖形著色技巧 在Python編程中&#xff0c;染色或著色不僅限于文本輸出&#xff0c;還涉及圖形、圖像甚至數據可視化的多個層面。本文將帶你走進Python的染色世界&#xff0c;從四個方面、五個方面、六個方面和七個方面詳細…

【WEEK15】 【DAY2】【DAY3】Email Tasks【English Version】

Continuation from【WEEK15】 【DAY1】Asynchronous Tasks【English Version】 Contents 17. Asynchronous, Timed, and Email Tasks17.2. Email Tasks17.2.1. Email sending is also very common in our daily development, and Springboot provides support for this as well…

用戶的權限

一&#xff0c;用戶權限基礎知識 1&#xff0c;用戶的權限有&#xff1a; r&#xff1a;讀 w&#xff1a;寫 x&#xff1a;執行 2&#xff0c;文件的權限&#xff1a; r&#xff1a;可以執行cat、head、tail等命令讀取文件中的內容 w&#xff1a;可以用vi/vim或者重定向等…

JeecgBoot/SpringBoot升級Nacos(2.0.4到2.2.3)啟動報錯

錯誤如下&#xff1a; 報這種錯誤基本就很頭大了&#xff0c;是框架不兼容的問題&#xff0c;自己找很難找到解決方法。 解決方案是把SpringBoot框架版本調高。 修改前&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId&g…

Dell戴爾XPS 16 9640 Intel酷睿Ultra9處理器筆記本電腦原裝出廠Windows11系統包,恢復原廠開箱狀態oem預裝系統

下載鏈接&#xff1a;https://pan.baidu.com/s/1j_sc8FW5x-ZreNrqvRhjmg?pwd5gk6 提取碼&#xff1a;5gk6 戴爾原裝系統自帶網卡、顯卡、聲卡、藍牙等所有硬件驅動、出廠主題壁紙、系統屬性專屬聯機支持標志、系統屬性專屬LOGO標志、Office辦公軟件、MyDell、邁克菲等預裝軟…