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.pswp.cn/bicheng/85750.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国家级与省级(不含港澳台)标准地图服务网站汇总

在先前的文章中,介绍了部分省级的标准地图服务网站可以下载各个区县近几年、不同要素的标准地图(链接:国家与省市县 标准地图服务网站 审图号地图下载),但是当时只汇总了部分省级的标准地图服务网站。 这两天看到了一个…

前端开发面试题总结-vue3框架篇(一)

文章目录 Vue3高频问答一、vue2/vue3中常用的构建工具和脚手架分别是什么? 有什么区别?二、请说一说vue2和vue3的区别?三、请说一说vue2和vue3响应式原理的区别?四、vue3 如何定义响应式数据?五、说一说你对vue3中的setup函数?六、说一说vue3中的路由…

【LLM06---相对位置编码】

文章目录 相对位置编码经典式XLNET式T5式DeBERTa式 相对位置编码 上一节我们介绍了绝对位置编码,这一节我们来看相对位置编码,也就是用相对位置信息来表示,之前每一个token的位置式通过一个绝对的位置向量来表示的,现在我们在计算…

纯跟踪算法本质解密:航向角偏差=预瞄角?数学证明与工程实践

定义关键问题 在深入纯跟踪算法核心前,必须澄清一对容易被混淆但至关重要的概念: 概念坐标系物理意义计算方式航向角偏差(α_global)全局坐标系车辆航向与预瞄点方向的夹角预瞄点方位角 - 车辆航向角预瞄角(α_body)车身坐标系预瞄点相对于车辆纵轴的夹…

自动驾驶叉车在仓库环境中是否安全?

随着自动驾驶叉车的兴起,仓库运营持续演进。叉车自动化技术的引入使仓库设施变得更快、更安全且更具成本效益。然而一个关键问题依然存在:它们在繁忙的仓库环境中是否安全? 一 、什么是自动驾驶叉车? 自动驾驶叉车,也…

Neo4j操作指南:修改节点数据与新增节点属性

Neo4j操作指南:修改节点数据与新增节点属性 引言 Neo4j作为领先的图数据库,提供了灵活的数据操作方式。在实际应用中,我们经常需要修改已有节点的数据或为节点添加新属性。本文将详细介绍如何使用Cypher查询语言在Neo4j中完成这些操作&…

AI大模型学习之基础数学:微积分在AI大模型中的核心-梯度与优化(梯度下降)详解

微积分在AI大模型中的核心:梯度与优化(梯度下降) 人工智能(AI)大模型的训练和优化依赖于数学基础,其中微积分、线性代数和概率统计构成了其理论核心。微积分在AI中的核心作用在于提供优化工具,尤其是通过梯度和梯度下降方法,帮助模型在高维参数空间中找到损失函数的最…

记录tweenjs踩坑

初次上手tweenjs&#xff0c;试了很多示例代码都不生效&#xff0c;结果在html中生效&#xff0c;在vue3的项目中怎么都不生效 <!DOCTYPE html> <html lang"en"><head><title>Tween.js / simplest possible example!</title><meta…

PINA开源程序用于高级建模的 Physics-Informed 神经网络

​一、软件介绍 文末提供程序和源码下载 PINA 是一个开源 Python 库&#xff0c;旨在简化和加速科学机器学习 &#xff08;SciML&#xff09; 解决方案的开发。PINA 基于 PyTorch、PyTorch Lightning 和 PyTorch Geometry 构建&#xff0c;提供了一个直观的框架&#xff0c;用…

一种对外IP/MAC地址收敛的软硬件系统

----------原创不易&#xff0c;欢迎点赞收藏。广交嵌入式开发的朋友&#xff0c;讨论技术和产品------------- 今天发一篇五年前的文章&#xff0c;不调单板。对以太网和交换片的较多理解&#xff0c;对系统级的优化。 大部分的网络设备&#xff0c;都由多种单板组成&#x…

【flink】 flink 读取debezium-json数据获取数据操作类型op/rowkind方法

flink 读取debezium-json数据获取数据操作类型op/rowkind方法。 op类型有c&#xff08;create&#xff09;,u&#xff08;update&#xff09;,d&#xff08;delete&#xff09; 参考官网案例&#xff1a;此处的"op": "u",就是操作类型。 {"before&qu…

某手游cocos2dlua反编译

一、获取加载的luac文件 通过frida hook libccos2dlua.so 的luaL_loadbuffer函数对luac进行dump js代码如下&#xff0c;得到dump后的lua文件 // 要加载的目标库名 var targetLibrary "libcocos2dlua.so"; var dlopen Module.findExportByName(null, "dlope…

`toRaw` 与 `markRaw`:Vue3 响应式系统的细粒度控制

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

Python文件迁移之Shutil库详解

Shutil是一个Python内置的用来高效处理文件和目录迁移任务的库。Shutil不仅支持基本的文件复制、移动和删除操作&#xff0c;还具备处理大文件、批量迁移目录、以及跨平台兼容性等特性。通过使用Shutil&#xff0c;我们可以更加轻松地实现文件系统的管理和维护&#xff0c;本文…

【服务器R环境架构】基于 micromamba下载 R 库包

目录 准备工作&#xff1a;下载并安装R环境下载并安装R环境方式1&#xff1a;下载 .tar.bz2 压缩包进行解压执行&#xff08;官方推荐&#xff09;方式2&#xff1a; 创建并激活R环境 下载R库包安装CRAN包在 micromamba 中安装 GitHub 包&#xff08;如 BPST&#xff09; 参考 …

基于 Apache POI 实现的 Word 操作工具类

基于 Apache POI 实现的 Word 操作工具类 这个工具类是让 AI 写的&#xff0c;已覆盖常用功能。 如不满足场景的可以让 AI 继续加功能。 已包含的功能&#xff1a; 文本相关&#xff1a; 添加文本、 设置字体颜色、 设置字体大小、 设置对齐方式、 设置字符间距、 设置字体加粗…

时间序列预测、分类 | 图神经网络开源代码分享(上)

本期结合《时间序列图神经网络(GNN4TS)综述》&#xff0c;整理了关于图神经网络在时间序列预测、分类等任务上的开源代码和学习资料以供大家学习、研究。 参考论文&#xff1a;《A Survey on Graph Neural Networks for Time Series: Forecasting, Classification, Imputation,…

Vue 添加水印(防篡改: 删除水印元素节点、修改水印元素的样式)

MutationObserver_API: 观察某一个元素的变化// index.vue<template><div class="container"><Watermark text="版权所有" style="background: #28c848"><!-- 可给图片、视频、div...添加水印 --><div class=&quo…

如何处理开发不认可测试发现的问题

解决方案 第一步&#xff1a;收集确凿证据 确保有完整的复现结果准备详细的记录材料&#xff1a; 截屏录屏操作步骤记录 带着这些证据与开发人员进行沟通 第二步&#xff1a;多角度验证 如果与开发人员沟通无果&#xff1a; 竞品分析&#xff1a;查看市场上同类产品如何…

linux生产环境下根据关键字搜索指定日志文件命令

grep -C 100 "error" server.log 用于在 server.log 文件中查找包含 “error” 的行&#xff0c;并同时显示该行前后100行的上下文。这是排查日志问题的常用技巧&#xff0c;解释一下&#xff1a; 命令参数详解 grep&#xff1a;文本搜索工具&#xff0c;用于在文件…