UE5 游戏模板 —— FirstShootGame


前言

有了前两个俯视角游戏的基础让我们来看看相对复杂点的第一人称射击模板。
模板主要演示的功能:拾取武器装备到角色身上、射击发射子弹

一、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

在 Unreal Engine 5 (UE5) 中,实现相机震动效果的方法主要依赖于 `CameraShake` 类及其相关功能。以下是关于如何在 UE5 中实现相机震动效果的具体说明: ### 1. 使用 Camera Shake 类 `Camera Shake` 是一种用于模拟屏幕抖动的效果,在游戏中常用来增强爆炸、撞击或其他动态事件的表现力。开发者可以通过继承 `UCameraShakeBase` 来自定义震屏行为。 #### 创建自定义的 Camera Shake 资源 - 打开 UE5 编辑器并导航至 **Content Browser**。 - 右键点击空白区域,选择 **Blueprint Class** -> **All Classes** 并搜索 `CameraShakeBase`。 - 创建一个新的 Blueprint 并命名为 `BP_MyCameraShake`。 #### 设置振荡参数 在创建的蓝图中,可以调整以下属性来定制化震屏效果: - **Oscillation Duration**: 控制震动持续的时间长度[^3]。 - **Pitch/Yaw/Roll Oscillations**: 定义摄像机围绕其轴向的旋转幅度和频率。其中, - **Pitch** 对应 Y 轴上的上下摆动。 - **Yaw** 对应 Z 轴上的左右摆动。 - **Roll** 对应 X 轴上的翻滚动作。 ```cpp // C++ 示例代码:设置简单的震屏逻辑 FVector Pitch(0.f, RandomFloat(-MaxPitch, MaxPitch), 0.f); FVector Yaw(RandomFloat(-MaxYaw, MaxYaw), 0.f, 0.f); FVector Roll(0.f, 0.f, RandomFloat(-MaxRoll, MaxRoll)); AddRotation(Pitch * Alpha); // Alpha 表示当前帧的比例因子 AddRotation(Yaw * Alpha); AddRotation(Roll * Alpha); ``` #### 应用 Camera Shake 要触发该效果,可以在游戏中的某个事件(如碰撞检测或按键输入)处调用如下函数: ```cpp UGameplayStatics::PlayWorldCameraShake(GetWorld(), BP_MyCameraShake, PlayerController->PlayerCameraManager->GetActorLocation(), 0.f, 1000.f); ``` 此代码片段表示在一个指定范围内播放预设好的震屏资源。 --- ### 2. 利用内置模板快速测试 如果不想从零开始配置,可以直接利用官方提供的模板文件进行实验。访问 Epic Games Launcher 的 Marketplace 页面或者 GitHub 社区寻找开源项目可能更加快捷高效。例如,“Starter Content Pack”通常包含了基本类型的视觉特效素材包,其中包括一些默认设计好的震屏样式供参考学习使用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值