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

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.xdnf.cn/news/1063027.html

相关文章:

  • Docker简单介绍与使用以及下载对应镜像(项目前置)
  • 【软考高级系统架构论文】论湖仓一体架构及其应用
  • RNN工作原理和架构
  • Python的6万张图像数据集CIFAR-10和CIFAR-100说明
  • Redis哨兵模式的学习(三)
  • STM32F103_LL库+寄存器学习笔记12.3 - 串口DMA高效收发实战3:支持多实例化的版本
  • 【24】二维码数据集(有v5/v8模型)/YOLO二维码检测
  • 项目拓展-Spring实现策略类统一管理
  • 【Elasticsearch】脚本(Script)
  • Duende Identity Server学习之一:认证服务器及一个Oidc/OAuth认证、用于Machine 2 Machine的客户端
  • 零基础学习Redis(12) -- Java连接redis服务器
  • 跟着AI学习C# Day29
  • 【LeetCode#第198题】打家劫舍(一维dp)
  • 【论文笔记】【强化微调】T-GRPO:对视频数据进行强化微调
  • MySQL误删数据急救指南:基于Binlog日志的实战恢复详解
  • ESP32 ESP-IDF Ubuntu平台工具链的标准设置
  • 山姆·奥特曼:从YC到OpenAI,硅谷创新之星的崛起
  • 01-驱动开发开篇
  • 冰箱压缩机电机驱动板【电源部分】
  • ARCGIS国土超级工具集1.6更新说明
  • 跟着AI学习C# Day27
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署Dify LLM 应用构建 PPT 生成助手的开发与实践
  • 力扣-72.编辑距离
  • 构建高效智能体系统:从简单到复杂,找到最适合你的解决方案
  • 3D可视化数字孪生智能服务平台-物联网智控节能控、管、维一体化技术架构
  • Gartner《AI-Driven Methods for Cost-Efficiency》学习心得
  • 类图:软件世界的“建筑蓝图”
  • 【Python】List
  • 结构体的嵌套问题
  • FPGA基础 -- Verilog 的属性(Attributes)