UE5 C++ 發射子彈發射(Projectile)

一.相關藍圖的練習,在我之前的文章中射擊子彈案例-CSDN博客

本篇使用C++實現

1.創建C++類 MyBullet,在MyBullet.h中包含相關頭文件

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Components/StaticMeshComponent.h"  //模型組件
//#include "Components/CapsuleComponent.h"  //球形碰撞組件的頭文件
#include "GameFramework/ProjectileMovementComponent.h"   //射擊組件
#include <Components/SphereComponent.h> //球形碰撞組件的頭文件
#include "MyBullet.generated.h" 


2.聲明屬性變量,子彈模型,子彈碰撞體,子彈發射器

public:UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MyComponent")UStaticMeshComponent* BulletMesh;   //static 組件UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MyComponent")USphereComponent* MySphere;    //碰撞組件UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MyComponent")UProjectileMovementComponent* FireGunProjectile; //

3.將組件實例化

BulletMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BulletComponent")); //實例化StaticMesh組件
//RootComponent = 
FireGunProjectile = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("FireGunProjectileComponent")); //實例化ProjectileMovement組件
MySphere = CreateDefaultSubobject<USphereComponent>(TEXT("SphereCollision")); // 

4.通過尋找靜態模型,設置靜態模型的實例。設置根組件,設置父子級,只要Projectile在根組件后面就能,讓物體跟隨,就有發射根組件的效果。

再設置參數,調整效果。發射的初始速度,最大速度,重力等。

MySphere = CreateDefaultSubobject<USphereComponent>(TEXT("SphereCollision")); // 
static ConstructorHelpers::FObjectFinder<UStaticMesh>TmpStaticMesh(TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Sphere.Sphere'")); //靜態加載資源 重要
BulletMesh->SetStaticMesh(TmpStaticMesh.Object); //.Object重要RootComponent = BulletMesh;//FireGunProjectile->setupattack
MySphere->SetupAttachment(RootComponent);
MySphere->InitSphereRadius(67);
FireGunProjectile->SetUpdatedComponent(RootComponent);//
FireGunProjectile->InitialSpeed = 1200.0f;//初始速度
FireGunProjectile->MaxSpeed = 24000.0f; //最大速度
FireGunProjectile->bRotationFollowsVelocity = false; //旋轉跟隨重力
FireGunProjectile->bIsHomingProjectile = true;    //跟隨組件
FireGunProjectile->ProjectileGravityScale = 0.02; //設置重力

5.生成藍圖類放到場景中,這樣就能實現單發的子彈效果

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

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

相關文章

SpringBoot 注解全解析

注解的優勢&#xff1a; 采用純 java 代碼&#xff0c;不在需要配置繁雜的 xml 文件在配置中也可享受面向對象帶來的好處類型安全對重構可以提供良好的支持減少復雜配置文件的同時亦能享受到 springIoC 容器提供的功能 1. 常用的Spring Boot注釋及其用途和示例 1&#xff09;S…

Java 中notify 和 notifyAll 方法介紹

1. notify 方法 notify() 方法是 Java 中 Object 類的一個方法&#xff0c;它用來喚醒在該對象的監視器&#xff08;monitor&#xff09;上等待的單個線程。如果有多個線程都在該對象上等待&#xff0c;則會隨機喚醒其中一個線程。被喚醒的線程將會嘗試重新獲取對象鎖&#xff…

idea集成git詳解教程(實用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下載git Git - Downloads 一路傻瓜式安裝即可&#xff08;NEXT&#xff09; 2.軟件測試 在Windows桌面空白處&#xff0c;點擊鼠標右鍵&#xff0c;彈出右鍵菜單 Git軟件安裝后&#xff0c;會在右鍵菜單中增加兩個菜單 Git GUI He…

matplotlib繪圖中文亂碼問題

如圖所示&#xff0c;在使用python包matplotlib繪圖時中文文字顯示亂碼&#xff0c;在繪圖前加入以下兩行代碼即可 # 導入包 import matplotlib.pyplot as plt # 解決中文亂碼問題 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus] False重新運行代…

Linux 進程的前臺/后臺切換

目錄 前言 簡單例子 前言 當你用shell啟動一個程序時&#xff0c;往往他是在前臺工作的。程序會一直占用終端命令行&#xff0c;例如你在前臺解壓的時候必須等著&#xff0c;期間干不了別的事&#xff08;除非另開一個終端&#xff09;。 例如經常用連接到遠程服務器執行腳本…

【知識摘要】一文帶你了解什么是RedLock。

1、什么是RedLock 紅鎖&#xff08;RedLock&#xff09;是一種分布式鎖算法&#xff0c;由 Redis 的作者 Salvatore Sanfilippo&#xff08;也稱為 Antirez&#xff09;設計&#xff0c;用于在分布式系統中實現可靠的鎖機制。它的設計解決了單一 Redis 實例作為分布式鎖可能出…

【Django】執行查詢—跨關系查詢中的跨多值關聯問題

跨多值查詢 跨越 ManyToManyField 或反查 ForeignKey &#xff08;例如從 Blog 到 Entry &#xff09;時&#xff0c;對多個屬性進行過濾會產生這樣的問題&#xff1a;是否要求每個屬性都在同一個相關對象中重合。 filter() 先看filter()&#xff0c;通過一個例子看&#xf…

打造無縫滾動體驗:JavaScript中的scrollIntoView()方法實戰指南

在現代Web開發中&#xff0c;提升用戶體驗是至關重要的。通過JavaScript的scrollIntoView()方法&#xff0c;我們可以為用戶創造出流暢而令人愉悅的滾動體驗。本文將深入研究scrollIntoView()的強大功能&#xff0c;并結合實例演示如何在項目中巧妙應用&#xff0c;以打造出無縫…

緩存穿透解決方案之布隆過濾器

布隆過濾器可以快速判斷數據是否存在&#xff0c;避免從數據庫中查詢數據是否存在&#xff0c;減輕數據庫的壓力 布隆過濾器是由一個初值為0的bit數組和N個哈希函數&#xff0c;可以用來快速的判斷某個數據是否存在 當我們想要標記某個數據是否存在時&#xff0c;布隆過濾器會…

Java底層自學大綱_高可用篇

高可用專題_自學大綱所屬類別學習主題建議課時&#xff08;h&#xff09; A 容器化技術001 Docker架構設計原理2.5 A 容器化技術002 Docker部署springboot項目2.5 A 容器化技術003 基于Docker-Compose部署微服務項目2.5 B Nginx實現高可用004 Nginx反向代理&負載均衡&a…

LabVIEW眼結膜微血管采集管理系統

LabVIEW眼結膜微血管采集管理系統 開發一套基于LabVIEW的全自動眼結膜微血管采集管理系統&#xff0c;以提高眼結膜微血管臨床研究的效率。系統集成了自動化圖像采集、圖像質量優化和規范化數據管理等功能&#xff0c;有效縮短了圖像采集時間&#xff0c;提高了圖像質量&#…

idea 多模塊A模塊調用了B模塊的Jar包,而非本地源碼

1&#xff0c;問題描述 對于多模塊的互相調用&#xff0c;比如模塊A&#xff0c;模塊B&#xff0c;模塊C&#xff0c; 這在本地都是可以編輯進行開發的源碼&#xff0c; 按理說是模塊A可以直接點進模塊B的本地源碼&#xff0c; 但是不知道什么原因&#xff0c;導致模塊A點進…

C++小記 - 二叉樹

文章目錄 二叉樹一、二叉樹理論基礎篇二叉樹的種類滿二叉樹完全二叉樹二叉搜索樹平衡二叉搜索樹 二叉樹的存儲方式鏈式存儲&#xff1a;順序存儲&#xff1a;遍歷規則&#xff1a;構造實現&#xff1a; 二叉樹的遍歷方式二叉樹的定義 二、二叉樹的遞歸遍歷遞歸算法的三個要素:遞…

vue+element UI中給指定日期添加標記

1.日期控件中添加:picker-options屬性&#xff0c;即:picker-options“myPickerOptions” <el-date-picker:class"item.scds !null ?xtsjBlue:xtsjRed"v-model"item.date"value-format"yyyy-MM-dd"type"date":picker-options"…

Python中的heapq模塊

Python中的heapq模塊 文章目錄 Python中的heapq模塊1.heapq的方法2.使用heapq創建堆3.使用heapq實現堆排序4.獲取堆中的前n個最大值或最小值Reference heapq模塊實現了堆隊列的算法&#xff0c;即優先隊列算法。heapq其實是實現了一種小頂堆&#xff0c;所以使用pop()方法返回的…

如何進行弱網測試?

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 如今這個高度互聯的時代里&#xff0c;網絡環境對于應用程序的影響越來越重要。 而弱網測試就是…

leetcode--接雨水(雙指針法,動態規劃,單調棧)

目錄 方法一&#xff1a;雙指針法 方法二&#xff1a;動態規劃 方法三&#xff1a;單調棧 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 黑色的是柱子&#xff0c;藍色的是雨水&#xff0c;我們先來觀察一下雨水的分布情況: 雨水落在凹槽之間&#xff0c;在一個凹槽的…

使用js寫一個登錄驗證碼效果

面試題 登錄頁面獲取驗證碼的功能&#xff0c;用戶點擊獲取驗證碼按鈕(id”btn1”)&#xff0c;按文字變為“(N)后獲取驗證碼”&#xff0c;N為倒計對秒數&#xff0c;從 60 開始&#xff0c;每秒減一&#xff0c;減到 0的時候&#xff0c;按鈕文字變為“獲取驗證碼”&#xff…

Beans模塊之工廠模塊Aware

博主介紹:?全網粉絲5W+,全棧開發工程師,從事多年軟件開發,在大廠呆過。持有軟件中級、六級等證書。可提供微服務項目搭建與畢業項目實戰,博主也曾寫過優秀論文,查重率極低,在這方面有豐富的經驗? 博主作品:《Java項目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

【JavaWeb】

Javaweb 數據庫相關概念MySQL數據庫MySQL數據模型SQLDDL--操作數據庫圖形化客戶端工具DML--操作數據DQL數據庫約束 數據庫設計多表查詢事務 數據庫相關概念 數據庫 存儲數據的倉庫&#xff0c;數據是有組織的進行存儲 英文&#xff1a;DataBase&#xff0c;簡稱DB 數據庫管理系…