【AI】p54-p58導航網絡、藍圖和AI樹實現AI隨機移動和跟隨移動、靠近玩家揮拳、AI跟隨樣條線移動思路

p54-p58導航網絡、藍圖和AI樹實現AI隨機移動和跟隨移動、靠近玩家揮拳、AI跟隨樣條線移動思路

  • p54導航網格
  • p55藍圖實現AI隨機移動和跟隨移動
    • AI Move To(AI進行移動)
    • Get Random Pointln Navigable Radius(獲取可導航半徑內的隨機點)
    • Set Timer by Event(以事件設置定時器)
    • Random Float in Range(范圍內隨機浮點)
  • p56AI樹實現AI隨機移動和跟隨移動
    • 目標感知跟新時(AIPerception)(On Target Perception Updated(AIPerception))
    • 中斷AISimulus(Break AISimulus)
    • AI行為樹
  • p57靠近玩家揮拳
    • 蒙太奇
  • p58AI跟隨樣條線移動思路

p54導航網格

在體積找到“導航網格體邊界體積”拖拽到視圖中出現一個線框和綠色覆蓋,線框覆蓋部分屬于AI可以行動范圍
快捷鍵“P”可以顯示消失的查看綠色覆蓋

綠色導航網格分為靜態和動態
靜態代表游戲運行之前就已經計算好了AI可以運動的范圍
動態代表游戲運行時實時的計算AI可以運動的范圍
請添加圖片描述

p55藍圖實現AI隨機移動和跟隨移動

ctrl+w復制ThirdPersonCharacter,創建的新藍圖類重命名為AI
新建文件夾AI,把藍圖類AI放到新文件夾AI中
打開藍圖類AI,刪掉藍圖、遍歷、攝像機、其他事件圖表

AI Move To(AI進行移動)

作用:讓AI進行移動
請添加圖片描述
Pawn:連接(使其移動的)對象(一般都連接self(獲得一個對自己的引用))
Destination:(將要移動到的)目標
Target Actor:跟蹤(某個角色)移動(如果連接的是玩家,就會一直跟著玩家跑)(和Destination選擇一個使用,區別為Target Actor傳入的是演員,Destination傳入的是向量)
Acceptance Radius:走到目標的多少范圍
Stop on Overlap:大勾后Acceptance Radius變成了走到目標的多少范圍停止
成功時:AI到達目的地成功時觸發
失敗時:AI到達目的地失敗時觸發

創建新的自定義事件“AI移動”連接輸入執行引腳
Pawn連接self
Destination拉出引線搜索Get RandomPointln Navigable Radius(獲取可導航半徑內的隨機點)

Get Random Pointln Navigable Radius(獲取可導航半徑內的隨機點)

請添加圖片描述
Origin:(需要傳入一個圓心)在此圓心范圍內找到一個點
Radius:半徑范圍數值

Origin拉出引線搜索“獲取Actor位置”
創建事件開始運行,拉出引線連接事件AI移動
藍圖如下
請添加圖片描述
現在AI會在以自身為半徑的Radius范圍內隨機選一個點移動,之后就會停下,當前目的需要AI在移動到一個點后再次移動

Set Timer by Event(以事件設置定時器)

Time:可以設置時間
Looping:循環(打勾即會循環)

Random Float in Range(范圍內隨機浮點)

如圖連接藍圖
請添加圖片描述
如此,每過5到7秒觸發一次時間AI移動,循環(如果AI還沒到目的地時間就到了,AI會選擇向新的點走去)

p56AI樹實現AI隨機移動和跟隨移動

右鍵內容瀏覽器-》人工智能-》黑板
右鍵內容瀏覽器-》人工智能-》行為樹
右鍵內容瀏覽器-》藍圖類-》搜索AIController(AI控制器)(這是所有AI控制器的父類)
請添加圖片描述

AI_BP可以看作是傀儡,AI_BT控制AI_BP,行為樹控制AI的行為,黑板存儲變量

在黑板新建兩個變量,一個bool變量重命名為“是否看到玩家?”,另一個是向量重命名為“要去的坐標”
打開AIController,在組件面板添加“AI感知組件”(作用是讓AI感知周圍的敵人友軍等)
請添加圖片描述
點擊AIPerception(AI感知組件),在細節面板找到“AI感知”點擊“感官配置”右側的加號
請添加圖片描述
有許多配置,選擇視力配置
實力配置可以修改如下參數
請添加圖片描述
次要視覺半角角度:AI的視力范圍
請添加圖片描述
按歸屬檢測中的中立方要打勾,這樣才可以檢測到玩家(如果想要更改敵友等需要更改c++代碼)

目標感知跟新時(AIPerception)(On Target Perception Updated(AIPerception))

請添加圖片描述
Actor:AI看到(因為之前選的視力配置)的”Pawn和角色藍圖類“會傳到此處
Stimulus:刺激物

Actor拉出引線搜索”類型轉換為ThirdPersonCharacter"(類型轉換的作用是只有看到小白人才會響應之后的邏輯)
Stimulus拉出引線搜索“中斷AISimulus”

中斷AISimulus(Break AISimulus)

請添加圖片描述
Successfully Sensed:是否成功感測到了小白人
如下圖連接藍圖,進行測試
請添加圖片描述
想要進行測試還需要打開AI_BP,在細節面板-》Pawn-》AI控制器類-》選擇AI_BT(剛才的AIContoller)
請添加圖片描述

編譯保存
如此在游戲中出現在AI視野范圍內左上角會出現true,走出AI視野會在左上角出現false

AI行為樹

請添加圖片描述
從根拉出的Composites:復合節點(用于分支的規則)
Selecter:選擇,幾選一……
Sequence:序列,按順序進行

因為目的是AI看到玩家沖到玩家身邊揮拳,所以先連接Selector根據有沒有看到玩家而判斷,接下來連接Sequence(如果看到了玩家依次進行什么動作)
如下圖連接
請添加圖片描述
在左側Sequence右鍵添加裝飾器,選擇黑板Blackboard(調用了黑辦里的變量)
請添加圖片描述
在右側細節面板選擇要調用的變量“是否看到玩家?”
請添加圖片描述
當黑板太多時,點擊空白處,在細節面板可以選擇使用的黑板
請添加圖片描述
右側Sequence也添加裝飾器黑板,在細節面板-》黑板-》鍵查詢-》未設置,黑板鍵選擇變量“是否看到玩家?”
(選擇未設置就代表未看到,已設置就是看到)
請添加圖片描述

現在設置優先級(使其優先級相等)點擊Sequence的黑板,在細節面板-》流控制-》觀察器終止-》Both
請添加圖片描述

兩個都如此設置,現在兩個在同一優先級
請添加圖片描述
在AI_BT的事件圖表右鍵搜索“獲取黑板”拉出引線搜索“將值設為布爾”,此時“將值設為布爾”出現Bool Value節點,連接中斷AIStimulus藍圖的Successfully Sensed節點

從Key Name拉出引線搜索“創建文字命名”,在“創建文字命名”寫上“是否看到玩家?”

如此就可以實時的傳遞bool值“是否看到玩家?”了

現在行為樹的規則有了,但是還沒有內容,接下來添加內容
點擊左上角新建任務,選擇BTTask_BlueprintBase(如果沒下拉,選擇即可)
請添加圖片描述
在新建的任務(藍圖)在左側我的藍圖,點擊函數右側的重載“事件接收執行AI”
請添加圖片描述
刪除之前創建的藍圖實現隨機移動的藍圖

如圖在新建的任務如下圖鏈接
請添加圖片描述
Comtrolled Pawn連接AI Move To的Pawn(這一步是連接AI控制器的對象)

AI Move To的成功時連接”完成執行“(Finish Execute)(這一步是讓AI在執行完成后告訴系統到底是成功還是失敗了,才能進行下一個任務)(不要忘記給完成執行的bool打勾)
(必須在完成任務時讓編譯器知道,不然就不會做任何事了)
請添加圖片描述

這是隨機找點的邏輯,邏輯寫完該讓行為樹調用了
在右側行為樹”沒看到玩家時“拉出搜索”隨機找點_BP“(剛才新建的任務的重命名)
請添加圖片描述
再添加一個Wait。設置為5秒,這樣就會,找個點,待5秒,再找個點,待5秒,如此循環

現在行為樹還沒有和AIController產生聯系
在AIController的藍圖中創建”事件開始運行“,連接”運行行為樹“
在”運行行為樹“的BTAsset選擇對象行為樹”AI_BT“
請添加圖片描述
在AI_Tree新創建一個任務”尋找玩家_BP“,重載”接收執行AI“如圖連接
請添加圖片描述
現在AI會一陣跟著玩家,但是很容易視野丟失玩家就會跑開
解決辦法:讓AI看到玩家后一直朝向玩家
打開AI小白人藍圖,在組件選中角色移動,在細節面板搜索朝向,取消勾選
請添加圖片描述
請添加圖片描述
選中類默認值,在細節面板找到Pawn-》使用控制器旋轉Yaw
請添加圖片描述
請添加圖片描述
打開尋找玩家_BP,搜索”設置焦距“目標連接Owner Controller,New Focus連接Return Value
請添加圖片描述
控制AI旋轉方向的是設置焦距的New Focus,New Focus連接獲取玩家角色,就會一直看向玩家角色方向

使用焦距后AI會一直朝向玩家,會在還沒看到玩家的時候斜著走等等
所以需要在沒看到玩家時關掉設置焦距

在隨機找點_BP中創建清除焦距藍圖,如下圖連接
請添加圖片描述

p57靠近玩家揮拳

給AI添加一個碰撞盒子(Sphere Collision)調整大小
點擊Sphere,在細節面板點擊兩個藍圖(組件開始重疊時(Sphere)、組件結束重疊時(Sphere))的加號創建藍圖

蒙太奇

蒙太奇就是多個動畫或片段剪輯組合在一起,通過程序驅動播放某一個片段

點擊組件面板的“網格體(CharacterMeshO)”拖出,拉出引線搜索“獲取動畫實例(Get Anim Instance)”,拉出引線搜索“蒙太奇播放(Montage Play)”
(蒙太奇播放的目標是動畫實例,所以先創建前面兩個藍圖。因為要讓“網格體(CharacterMeshO)”里的模型播放動畫,所以選用“網格體(CharacterMeshO)”來連接)

在這里插入圖片描述
為蒙太奇播放添加一個動畫

可以通過調節In Play Rate而更改動畫播放時間

返回值是直接獲取動畫的長度,練到time效果如下:
當播放蒙太奇的同時,觸發計時器,計時器開始倒計時,時間為蒙太奇的總時間,倒計時結束時,正好是動畫播放完,觸發自定義事件,就會再一次播放動畫,觸發計時器,勾選looping之后,就會如此重復播放動畫
請添加圖片描述
以事件設置定時器的Return Value拉出引線搜索“Clear and Invalidate Timer by Handle(以句柄清除定時器并使之無效)”

在這里插入圖片描述
按上述路徑打開,復制第一個,在AI文件夾復制并改名“AI_AnimBP”(以防和玩家的混掉)

打開AI_BP藍圖,點擊組件面板的“網格體(charaMeshO)(繼承)”在細節面板的動畫-》動畫類。選擇剛才命名的“AI_AnimBP”
在這里插入圖片描述
雙擊打開“AI_AnimBP”
雙擊左側動畫圖表的AnimGraph
在這里插入圖片描述
兩個連線之間添加一個插槽“DefaultSlot”
在這里插入圖片描述
插槽的作用相當于標簽(分類),為了更好的識別

完整藍圖如下
在這里插入圖片描述
現在拳頭靠近玩家攝像機時會被阻擋,所以進行如下操作
打開藍圖AI_BP,選中網格體-》在細節面板-》碰撞-》碰撞預設改為Custom-》Camera勾選忽略
在這里插入圖片描述

p58AI跟隨樣條線移動思路

如圖,隨著點走
在這里插入圖片描述
新建一個Actor藍圖類
在添加組件添加“樣條組件”
拉出藍圖到視口會出現下圖
在這里插入圖片描述
選中左側點,按住Alt鍵拉動可以快速創建一個點
在這里插入圖片描述

打開事件樹,在左上角新建任務,新建
拉出時間接收執行AI,連接獲取類的所有Actor(Actor Class選中剛才創建的藍圖)
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

Java基礎十 - 設計模式

一、單例 1. 創建 餓漢式 package basic;public class ESingleton {// 先私有化靜態實例private static ESingleton eSingleton new ESingleton();// 私有化構造方法,防止外部實例化private ESingleton(){};// 提供全局訪問方法public static ESingleton geteSi…

時序預測 | MATLAB實現基于LSTM長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于LSTM長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于LSTM長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 Matlab實現LSTM長短期記憶神經…

識別和應對內存抖動

關于作者:CSDN內容合伙人、技術專家, 從零開始做日活千萬級APP。 專注于分享各領域原創系列文章 ,擅長java后端、移動開發、人工智能等,希望大家多多支持。 目錄 一、導讀二、概覽三、案例分析3.1 使用memory-profiler3.2 使用 cp…

磁粉制動器離合器收放卷應用介紹

張力控制系統的開環閉環應用介紹,請查看下面文章鏈接: PLC張力控制(開環閉環算法分析)_張力控制plc程序實例_RXXW_Dor的博客-CSDN博客里工業控制張力控制無處不在,也衍生出很多張力控制專用控制器,磁粉制動器等,本篇博客主要討論PLC的張力控制相關應用和算法,關于繞線…

什么是 fullgc

GC GC 全稱為garbage collection,中文含義為垃圾回收,在jvm中的含義為回收無用內存空間 Young space 中文名為年輕代或者新生代,為JVM 堆的一部分,由分代GC概念劃分而來,保存生命周期較短的對象 Tenured space 中文名為老年代…

APP外包開發的iOS開發語言

學習iOS開發需要掌握Swift編程語言和相關的開發工具、框架和技術。而學習iOS開發需要時間和耐心,尤其是對于初學者。通過堅持不懈的努力,您可以逐步掌握iOS開發技能,構建出功能豐富、優質的移動應用。今天和大家分享學習iOS開發的一些建議方法…

【數據結構系列】鏈表

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續學…

解決hbase節點已下線,但在status中顯示為dead問題

工作中需要下線4臺hbase小節點,下線完成后使用status 命令查看,有一臺為dead狀態: 使用status detailed 查看,發現“hd-03"這臺節點是dead。 檢查各節點配置文件無誤,并使用 /opt/hbase/bin/hbase-daemon.sh restart master 重啟兩個…

less基本使用

1 less中的變量 //對值進行聲明 link-color: #ccc//定義變量名稱 .{sleName} {}bg: background-color; //定義屬性名稱 .container {{bg}: red; }2 繼承(復用重復樣式) //繼承必須位于選擇器最后 //繼承選擇器名不能為變量 .a:hover:extend(.b) {}.a {…

走出迷宮(多組輸入bfs)

鏈接:登錄—專業IT筆試面試備考平臺_牛客網 來源:牛客網 題目描述 小明現在在玩一個游戲,游戲來到了教學關卡,迷宮是一個N*M的矩陣。 小明的起點在地圖中用“S”來表示,終點用“E”來表示,障礙物用“#…

淺談人工智能技術與物聯網結合帶來的好處

物聯網是指通過互聯網和各種技術將設備進行連接,實時采集數據、交互信息的網絡,對設備實現智能化自動化感知、識別和控制,給人們帶來便利。 人工智能是計算機科學的一個分支,旨在研究和開發能夠模擬人類智能的技術和方法。人工智能…

Redis: 詳解、使用教程和示例

Redis: 詳解、使用教程和示例 什么是 Redis? Redis(Remote Dictionary Server)是一個開源的、內存數據存儲系統,它可以用作數據庫、緩存和消息中間件。它支持多種數據結構,如字符串、哈希表、列表、集合、有序集合等…

Hadoop組件

前言 Hadoop 是一個能夠對大量數據進行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點。 HDFS(hadoop分布式文件系統) 是hadoop體系中數據存儲管理的基礎。他是一個高度容錯的系統,能檢測和應對硬件故障。

后院失火、持續虧損!Mobileye半年報「不回避」競爭壓力

"客戶在2023年上半年非常謹慎,導致增長率低于正常水平,但我們已經看到下半年回暖趨勢,預計下半年交付將比去年同期增長16%,遠高于上半年。"這是Mobileye在近日公司半年報發布會上的預判。 公開數據顯示,今年…

Python 實現Selenium錄屏的一種方法(圖片整合成動態圖)

由于UI層自動化的不穩定性,經常會遇到執行中斷或用例失敗的問題,以下是一些常見的措施。 1.詳細的日志 2.定位出錯時截圖 3.Pytest的緩存機制(可以記錄成功了哪些失敗了哪些) 4.自動重試機制(如pytest-rerunfailures) 5.用例錄像 用例錄像是最直觀的一…

2023網絡安全常用工具匯總(附學習資料+工具安裝包)

幾十年來,攻擊方、白帽和安全從業者的工具不斷演進,成為網絡安全長河中最具技術特色的燈塔,并在一定程度上左右著網絡安全產業發展和演進的方向,成為不可或缺的關鍵要素之一。 話不多說,網絡安全10款常用工具如下 1、…

Opencv4基于C++基礎入門筆記:圖像 顏色 事件響應 圖形 視頻 直方圖

效果圖??????:opencv人臉識別效果圖(請叫我真愛粉) 先看一下效果圖勾起你的興趣! 文章目錄: 一:環境配置搭建 二:圖像 1.圖像讀取與顯示 main.cpp 運行結果 2.圖像色彩空間轉換 2.1 換色彩 test.h …

感受RFID服裝門店系統的魅力

嘿,親愛的時尚追隨者們!今天小編要給你們帶來一股時尚新風潮,讓你們感受一下什么叫做“RFID服裝門店系統”,這個超酷的東西! 別著急,先別翻白眼,小編來解釋一下RFID是什么玩意兒。它是射頻識別…

云計算——存儲虛擬化功能

作者簡介:一名云計算網絡運維人員、每天分享網絡與運維的技術與干貨。 座右銘:低頭趕路,敬事如儀 個人主頁:網絡豆的主頁????? 目錄 前期回顧 前言 一.存儲虛擬化功能 1.精簡磁盤和空間回收 2.快照 (1&a…

面試熱題(反轉字符串中的單詞)

給你一個字符串 s ,請你反轉字符串中 單詞 的順序。 單詞 是由非空格字符組成的字符串。s 中使用至少一個空格將字符串中的 單詞 分隔開。 返回 單詞 順序顛倒且 單詞 之間用單個空格連接的結果字符串。 注意:輸入字符串 s中可能會存在前導空格、尾隨空格…