UE5 游戲模板 —— FirstShootGame

UE5 游戲模板 —— FirstShootGame

  • 前言
  • 一、GameMode
  • 二、組件
    • 1.ShooterPickUpComponent
      • 單播
      • 多播
    • 2.ShooterWeaponComponent
      • 附著武器
      • 開火
    • 3.小結
    • 4.ShooterProjectile
      • 初始化
      • 碰撞受擊檢測
    • 三、Character
      • 初始化
      • 輸入移動
  • 總結


前言

有了前兩個俯視角游戲的基礎讓我們來看看相對復雜點的第一人稱射擊模板。
模板主要演示的功能:拾取武器裝備到角色身上、射擊發射子彈

一、GameMode

已經是我們的老朋友了,指定了默認的Pawn,也就是操作的玩家。
在這里插入圖片描述

二、組件

1.ShooterPickUpComponent

初始化了球形碰撞體的半徑
綁定開始碰撞事件
在綁定的碰撞事件中判斷碰撞的Actor類型,然后廣播OnPickUp(綁定的藍圖事件)
移除碰撞綁定,避免再次進入碰撞函數
在這里插入圖片描述
這里講一下UE的廣播
經常使用的有 單播 多播 動態單播 動態多播

單播

先來說一下單播 既1對1 綁定 觸發一個相應一個
典型的定義方式如下,分別是無參無返回、有N個參數無返回、有N個參數有返回
在這里插入圖片描述
在這里插入圖片描述
綁定的方式有很多,其實可以很簡單的理解,我們當前定義的委托要用在什么場景,就用哪種方式進行綁定
在這里插入圖片描述
在這里插入圖片描述
那什么是動態單播呢?其實也很好理解,如果是動態的就可以暴露給藍圖進行實現

DECLARE_DYNAMIC_DELEGATE_OneParam(FTestDelegate04,int,Value);FTestDelegate04 TestDele04;

在這里插入圖片描述
在這里插入圖片描述

多播

多播就是一對多,且動態多播可以更直接的暴漏給藍圖使用
回到我們的第一人稱模板
在這里插入圖片描述
BlueprintAssignable 這個屬性標簽就是把多播暴漏給藍圖使用的
在這里插入圖片描述
可以看到在藍圖中綁定了一些函數,接下來我們再回到代碼中綁定一個函數,這樣就是一對二也就是一對多的動態多播了
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.ShooterWeaponComponent

附著武器

當我們碰撞到球形碰撞體后,調用到了動態多播,動態多播是由藍圖實現的,又調用到了我們的下一個組件ShooterWeaponComponent 去附加武器到角色身上
在這里插入圖片描述
在這里插入圖片描述
將自身附加到目標角色的骨骼上,綁定添加開火的輸入
在這里插入圖片描述

開火

綁定按鍵后,我們按下鼠標左鍵需要發射子彈
計算生成子彈的位置并生成子彈
播放射擊音效
播放動畫蒙太奇
在這里插入圖片描述

3.小結

你可能感覺這樣的組件式設計十分難以理解甚至是榮譽,其實這樣的做法大有妙處,我們可以很快的衍生出各種武器的拾取射擊,甚至連武器的輸入方式不同可以輕松處理,ShooterPickUpComponent 組件只負責拾取,所有需要拾取的武器只需要掛載此組件便可以拾取,ShooterWeaponComponent 處理附加到骨骼以及射擊的功能,每種武器的模型不同動畫不同聲音不同,甚至是操作不同,但是通過這個組件就能巧妙的動態配置了。

4.ShooterProjectile

子彈組件,UE自帶的UProjectileMovementComponent 組件就是用來處理這種發射物的,里面的功能非常強大。

初始化

只要對我們的子彈Actor掛載UProjectileMovementComponent 組件我們就可以實現子彈效果,設置參數如下
在這里插入圖片描述

碰撞受擊檢測

給碰撞到的物體添加一個子彈速度方向的力并銷毀自身
在這里插入圖片描述

三、Character

我們的輸入可以在PlayerController中去管理,也可以在角色中管理,具體如何管理和游戲模式有關,PlayerController更像是全局的一個控制,比如英雄聯盟中的視角移動我們可以做到PlayerController中,而每個英雄的具體移動可以放到角色中去。

初始化

在這里插入圖片描述

輸入移動

在這里插入圖片描述
在這里插入圖片描述


總結

可以看出雖然是入門級別的模板其中的細節非常多,并不是堆砌代碼而是有條理的完成一個小Demo

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

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

相關文章

國家級與省級(不含港澳臺)標準地圖服務網站匯總

在先前的文章中,介紹了部分省級的標準地圖服務網站可以下載各個區縣近幾年、不同要素的標準地圖(鏈接:國家與省市縣 標準地圖服務網站 審圖號地圖下載),但是當時只匯總了部分省級的標準地圖服務網站。 這兩天看到了一個…

前端開發面試題總結-vue3框架篇(一)

文章目錄 Vue3高頻問答一、vue2/vue3中常用的構建工具和腳手架分別是什么? 有什么區別?二、請說一說vue2和vue3的區別?三、請說一說vue2和vue3響應式原理的區別?四、vue3 如何定義響應式數據?五、說一說你對vue3中的setup函數?六、說一說vue3中的路由…

【LLM06---相對位置編碼】

文章目錄 相對位置編碼經典式XLNET式T5式DeBERTa式 相對位置編碼 上一節我們介紹了絕對位置編碼,這一節我們來看相對位置編碼,也就是用相對位置信息來表示,之前每一個token的位置式通過一個絕對的位置向量來表示的,現在我們在計算…

純跟蹤算法本質解密:航向角偏差=預瞄角?數學證明與工程實踐

定義關鍵問題 在深入純跟蹤算法核心前,必須澄清一對容易被混淆但至關重要的概念: 概念坐標系物理意義計算方式航向角偏差(α_global)全局坐標系車輛航向與預瞄點方向的夾角預瞄點方位角 - 車輛航向角預瞄角(α_body)車身坐標系預瞄點相對于車輛縱軸的夾…

自動駕駛叉車在倉庫環境中是否安全?

隨著自動駕駛叉車的興起,倉庫運營持續演進。叉車自動化技術的引入使倉庫設施變得更快、更安全且更具成本效益。然而一個關鍵問題依然存在:它們在繁忙的倉庫環境中是否安全? 一 、什么是自動駕駛叉車? 自動駕駛叉車,也…

Neo4j操作指南:修改節點數據與新增節點屬性

Neo4j操作指南:修改節點數據與新增節點屬性 引言 Neo4j作為領先的圖數據庫,提供了靈活的數據操作方式。在實際應用中,我們經常需要修改已有節點的數據或為節點添加新屬性。本文將詳細介紹如何使用Cypher查詢語言在Neo4j中完成這些操作&…

AI大模型學習之基礎數學:微積分在AI大模型中的核心-梯度與優化(梯度下降)詳解

微積分在AI大模型中的核心:梯度與優化(梯度下降) 人工智能(AI)大模型的訓練和優化依賴于數學基礎,其中微積分、線性代數和概率統計構成了其理論核心。微積分在AI中的核心作用在于提供優化工具,尤其是通過梯度和梯度下降方法,幫助模型在高維參數空間中找到損失函數的最…

記錄tweenjs踩坑

初次上手tweenjs&#xff0c;試了很多示例代碼都不生效&#xff0c;結果在html中生效&#xff0c;在vue3的項目中怎么都不生效 <!DOCTYPE html> <html lang"en"><head><title>Tween.js / simplest possible example!</title><meta…

PINA開源程序用于高級建模的 Physics-Informed 神經網絡

?一、軟件介紹 文末提供程序和源碼下載 PINA 是一個開源 Python 庫&#xff0c;旨在簡化和加速科學機器學習 &#xff08;SciML&#xff09; 解決方案的開發。PINA 基于 PyTorch、PyTorch Lightning 和 PyTorch Geometry 構建&#xff0c;提供了一個直觀的框架&#xff0c;用…

一種對外IP/MAC地址收斂的軟硬件系統

----------原創不易&#xff0c;歡迎點贊收藏。廣交嵌入式開發的朋友&#xff0c;討論技術和產品------------- 今天發一篇五年前的文章&#xff0c;不調單板。對以太網和交換片的較多理解&#xff0c;對系統級的優化。 大部分的網絡設備&#xff0c;都由多種單板組成&#x…

【flink】 flink 讀取debezium-json數據獲取數據操作類型op/rowkind方法

flink 讀取debezium-json數據獲取數據操作類型op/rowkind方法。 op類型有c&#xff08;create&#xff09;,u&#xff08;update&#xff09;,d&#xff08;delete&#xff09; 參考官網案例&#xff1a;此處的"op": "u",就是操作類型。 {"before&qu…

某手游cocos2dlua反編譯

一、獲取加載的luac文件 通過frida hook libccos2dlua.so 的luaL_loadbuffer函數對luac進行dump js代碼如下&#xff0c;得到dump后的lua文件 // 要加載的目標庫名 var targetLibrary "libcocos2dlua.so"; var dlopen Module.findExportByName(null, "dlope…

`toRaw` 與 `markRaw`:Vue3 響應式系統的細粒度控制

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

Python文件遷移之Shutil庫詳解

Shutil是一個Python內置的用來高效處理文件和目錄遷移任務的庫。Shutil不僅支持基本的文件復制、移動和刪除操作&#xff0c;還具備處理大文件、批量遷移目錄、以及跨平臺兼容性等特性。通過使用Shutil&#xff0c;我們可以更加輕松地實現文件系統的管理和維護&#xff0c;本文…

【服務器R環境架構】基于 micromamba下載 R 庫包

目錄 準備工作&#xff1a;下載并安裝R環境下載并安裝R環境方式1&#xff1a;下載 .tar.bz2 壓縮包進行解壓執行&#xff08;官方推薦&#xff09;方式2&#xff1a; 創建并激活R環境 下載R庫包安裝CRAN包在 micromamba 中安裝 GitHub 包&#xff08;如 BPST&#xff09; 參考 …

基于 Apache POI 實現的 Word 操作工具類

基于 Apache POI 實現的 Word 操作工具類 這個工具類是讓 AI 寫的&#xff0c;已覆蓋常用功能。 如不滿足場景的可以讓 AI 繼續加功能。 已包含的功能&#xff1a; 文本相關&#xff1a; 添加文本、 設置字體顏色、 設置字體大小、 設置對齊方式、 設置字符間距、 設置字體加粗…

時間序列預測、分類 | 圖神經網絡開源代碼分享(上)

本期結合《時間序列圖神經網絡(GNN4TS)綜述》&#xff0c;整理了關于圖神經網絡在時間序列預測、分類等任務上的開源代碼和學習資料以供大家學習、研究。 參考論文&#xff1a;《A Survey on Graph Neural Networks for Time Series: Forecasting, Classification, Imputation,…

Vue 添加水印(防篡改: 刪除水印元素節點、修改水印元素的樣式)

MutationObserver_API: 觀察某一個元素的變化// index.vue<template><div class="container"><Watermark text="版權所有" style="background: #28c848"><!-- 可給圖片、視頻、div...添加水印 --><div class=&quo…

如何處理開發不認可測試發現的問題

解決方案 第一步&#xff1a;收集確鑿證據 確保有完整的復現結果準備詳細的記錄材料&#xff1a; 截屏錄屏操作步驟記錄 帶著這些證據與開發人員進行溝通 第二步&#xff1a;多角度驗證 如果與開發人員溝通無果&#xff1a; 競品分析&#xff1a;查看市場上同類產品如何…

linux生產環境下根據關鍵字搜索指定日志文件命令

grep -C 100 "error" server.log 用于在 server.log 文件中查找包含 “error” 的行&#xff0c;并同時顯示該行前后100行的上下文。這是排查日志問題的常用技巧&#xff0c;解釋一下&#xff1a; 命令參數詳解 grep&#xff1a;文本搜索工具&#xff0c;用于在文件…