当前位置: 首页 > news >正文

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

相关文章:

  • 林浩然与杨凌芸的Swing组件奇遇记:从按钮到滚动条的UI大冒险
  • 微信小程序项目上码云gitee传到 git 仓库
  • 飞腾平台编译安装openGauss数据库
  • CentOS安装GUI图形界面
  • C# 经典:ref 和 out 的区别详解
  • 什么样才算好图——从生图模型质量度量方法看模型能力的发展
  • 【Javascript编程实操02】1、判断一个年份是闰年还是平年 2、找到三个数中最小的数
  • LeetCode 2621.睡眠函数
  • HTTP---------状态码
  • Huggingface初上手即ERNIE-gram句子相似性实战
  • pip包管理工具
  • 【大数据】-- dataworks 创建odps 的 hudi 外表
  • Mendeley 生成bibtex文件,sh脚本删减无用信息
  • 【解决】修改 UI界面渲染层级 的常见误区
  • 本地写的Bash脚本,Linux端运行报错:/bin/bash^M: bad interpreter: No such file or directory
  • [case10]使用RSQL实现端到端的动态查询
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Angular数据绑定机制
  • Computed property XXX was assigned to but it has no setter
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • HTTP那些事
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript实现分页效果
  • nginx 负载服务器优化
  • Node + FFmpeg 实现Canvas动画导出视频
  • React as a UI Runtime(五、列表)
  • ReactNativeweexDeviceOne对比
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Tornado学习笔记(1)
  • ucore操作系统实验笔记 - 重新理解中断
  • ViewService——一种保证客户端与服务端同步的方法
  • vue数据传递--我有特殊的实现技巧
  • 从零开始学习部署
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 项目实战-Api的解决方案
  • 小程序开发中的那些坑
  • 一个JAVA程序员成长之路分享
  • 一文看透浏览器架构
  • linux 淘宝开源监控工具tsar
  • ​io --- 处理流的核心工具​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #AngularJS#$sce.trustAsResourceUrl
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (BFS)hdoj2377-Bus Pass
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (蓝桥杯每日一题)love
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)Linux下编译安装log4cxx
  • (转)socket Aio demo
  • .net连接MySQL的方法