UE5 C++ 发射子弹发射(Projectile)

一.相关蓝图的练习,在我之前的文章中射击子弹案例-CSDN博客

本篇使用C++实现

1.创建C++类 MyBullet,在MyBullet.h中包含相关头文件

cpp 复制代码
#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.声明属性变量,子弹模型,子弹碰撞体,子弹发射器

cpp 复制代码
public:
	UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MyComponent")
	UStaticMeshComponent* BulletMesh;   //static 组件
	UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MyComponent")
	USphereComponent* MySphere;    //碰撞组件
	UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category = "MyComponent")
	UProjectileMovementComponent* FireGunProjectile; //

3.将组件实例化

cpp 复制代码
BulletMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BulletComponent")); //实例化StaticMesh组件
//RootComponent = 
FireGunProjectile = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("FireGunProjectileComponent")); //实例化ProjectileMovement组件
MySphere = CreateDefaultSubobject<USphereComponent>(TEXT("SphereCollision")); // 

4.通过寻找静态模型,设置静态模型的实例。设置根组件,设置父子级,只要Projectile在根组件后面就能,让物体跟随,就有发射根组件的效果。

再设置参数,调整效果。发射的初始速度,最大速度,重力等。

cpp 复制代码
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.生成蓝图类放到场景中,这样就能实现单发的子弹效果

相关推荐
directx3d_beginner2 天前
42,将移向指定位置改为c++
ue5
ue星空5 天前
UE5放了playstart显示badsize解决方案
ue5
directx3d_beginner7 天前
41,从UE5.1迁移到UE5.8排坑全记录
ue5
落魄大学生之流水线上谋生计10 天前
BLACK TIDE · 黑潮
ue5
曼巴UE518 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
归真仙人20 天前
【UE项目迁移银河麒麟(Linux)局域网会话搜索失败排查】
ue5·ue4·vr·unreal engine·银河麒麟
fanfan_hongyun22 天前
UE5.1 应用InWebSocketClient-main 接收websocket信息
ue5
远离UE423 天前
Chaos、WFC 与 FJA 原理与区别笔记
ue5
平行云23 天前
3D应用推流太贵太慢?ImmerShare Lite:利用本地算力实现极简一键分享
unity·ue5·实时云渲染·云桌面·像素流·云游戏·串流
fanfan_hongyun24 天前
UE5.1 VaRest插件 读取json http请求
ue5