Unreal5 实现武器切换功能

这篇具有很好参考价值的文章主要介绍了Unreal5 实现武器切换功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

·首先回忆一下之前在制作武器时,如何实现从后背拿武器的。我们创建了一个切换事件,判断当前是否持有武器,然后根据是否持有武器,去修改动画蓝图的变量,来触发从后面拿枪或者是否把枪放了回去。
然后在播放切枪动画时,手伸到背后时,会触发一个动画通知,在动画通知里面,根据动画蓝图里面的变量判断将武器拿到手里或者放回背上。
Unreal5 实现武器切换功能
如果按照这个逻辑扩展武器切换功能的话,那么,我们需要从动画通知入手,创建多个切换动画,然后每个切枪动画设置不同的动画通知,对应不同的武器。在动画蓝图里面,根据枚举去播放不同的切枪动画。还可以使用多种不同的切枪动画,但是我这里没有使用这种方法,而是动画通知去告知角色蓝图去切枪,这样的方法可以实现将枪放回后背的时候,可以直接从后背拿出另外一把枪。
在动画蓝图里面,我们可以使用基于枚举混合动画
Unreal5 实现武器切换功能
在节点上面右键,可以根据枚举增加相应的动画输入
Unreal5 实现武器切换功能
增加输入以后,可以根据传入的枚举值进行选择播放
Unreal5 实现武器切换功能
接下来看一下我实现的武器切换功能

武器变量修改

首先看一下修改后的武器变量
Unreal5 实现武器切换功能
我的制作规则就是角色可以拾取两把武器,为了方便引用,还有一个变量CurrentWeapon来表示当前角色手中拿着的武器。三个命名分别是手部和后背两个部位的插槽的名称。剩余两个状态是,一个是当前角色手中武器的类型,另一个是即将切换到的武器的类型,这个类型就是第一把武器还是第二把武器,后面还有其它的,方便扩充。

切换武器

先走一下切换武器的流程。切换武器之前判断是角色是否身上有武器,现在修改成了判断当前角色身上对应部位的武器,然后调用切换武器判断事件。
Unreal5 实现武器切换功能
切换武器判断事件是根据切换到目标使用的武器类型,然后再根据当前角色当前的情况去调用拿枪还是将枪收起来。
Unreal5 实现武器切换功能
拿枪收枪动画其实是修改了一下之前直接调用,改成了两个事件,还增加了一个只偏移镜头的事件(这个事件是为了实现从地上捡起枪来以后,直接拿到手里,不需要播放从背后掏枪的动画),里面另一方面是为了设置动画蓝图的相关变量,Equip Weapon变量就是为了能够让动画蓝图去播放切枪的动画,所以直接0.1秒就关闭了,防止一直开启,
Unreal5 实现武器切换功能
能够播放切枪动画,就是基于Equip Weapon变量控制的,前面的isWeapon变量是定义角色手上有没有枪,手上有枪那要播放持枪的动画。
Unreal5 实现武器切换功能
然后就到了动画蓝图的切枪动画,然后触发动画通知,手伸到背后的时候触发通知
Unreal5 实现武器切换功能
在动画通知里面,可以获取角色蓝图对象,然后去调用角色蓝图身上的修改武器位置的动画。
Unreal5 实现武器切换功能
修改武器位置事件,主要是为了实现将武器放到它当前情况下应该在的位置。我们现在有当前角色的持有武器的状态,还有一个目标状态。根据这两个状态去判断修改
Unreal5 实现武器切换功能
这样看着比较多,走一遍逻辑,就理解了。
这里主要是处理角色是否需要从后背拿枪,两个状态相同,只需要执行将枪收回即可
Unreal5 实现武器切换功能

往真的分支走,真的分支就是,先判断了一下当前状态是否为null,即相等,又为null,什么时候都不做
Unreal5 实现武器切换功能
后面就是根据当前角色手上持有的武器的状态,将枪放回背上应该放的部位,并将状态设置为了null
Unreal5 实现武器切换功能
拿枪之前,又做了状态修改,就是把目标状态设置给了当前状态,并将目标状态设置为了null,并对当前状态进行判断,是否需要手上持有武器
Unreal5 实现武器切换功能
最后就是根据状态,将那一把武器拿到手上,拿到手上了,并给Current Weapon赋值,主要是方便后面射击时,不用每次需要调用函数去获取当前角色手里拿着的武器类型。
Unreal5 实现武器切换功能
经过这么处理,就实现了多个武器的切换,并且还能后续扩展,重要的是,在切换武器的时候,一个动画里面,可以直接拿另外的一把武器。

拾取武器直接装备到手上

接下来,我又实现了拾取武器直接装备到手上,所以需要在创建武器实例那里增加逻辑,在生成武器这里,我重新封装了一下武器生成函数。角色只能手里拿两把武器。
Unreal5 实现武器切换功能
在生成武器事件里面,还是先实例化类
Unreal5 实现武器切换功能
实例化完成以后,增加了判断当前角色是否持有武器,持有武器的话,那就将武器放到背上。手上没武器,直接往手上放。
Unreal5 实现武器切换功能
往手上放的逻辑,因为前面封装了修改武器位置的函数,所以,我们设置了目标持有武器状态,并调用了动画通知调用的修改武器位置函数,设置镜头偏移。
Unreal5 实现武器切换功能
直接看有点不理解,按第一次拾取武器并放到手上,走一遍修改武器位置的逻辑。

第一块,Weapon State 和 Weapon State Cache肯定不相等的,但是Weapon State肯定为null,所以不会走收枪的分支了。
Unreal5 实现武器切换功能
第二块就是赋值和判断,就是将目标状态设置给Weapon State,分支判断也能通过了
Unreal5 实现武器切换功能
最后,就是就是将武器放到了手上,并设置了当前持有武器。
Unreal5 实现武器切换功能
最后就是持枪镜头偏移,在这里我修改了动画蓝图的状态,并偏移了镜头
Unreal5 实现武器切换功能
结束。文章来源地址https://www.toymoban.com/news/detail-480928.html

到了这里,关于Unreal5 实现武器切换功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unreal中利用控件蓝图系统控制模型的材质切换

    如果想要将某个模型做成可以切换材质的网格体 首先将此网格体做成Actor蓝图,这里我将模型名字命名为Mod_teapoy 右击创建一个蓝图 将此模型 Mod_teapoy 直接拖放到到蓝图中,我们这里命名为 “BP_茶几” 这里模型拥有多维材质(两个材质是一样的)。不影响后面的材质替换。

    2023年04月08日
    浏览(11)
  • 【UE5 Cesium】11-Cesium for Unreal 切换Dynamic Pawn为其它Pawn

            我们知道在Cesium for Unreal中默认使用的是DynamicPawn来浏览地图场景。DynamicPawn适用全球浏览,可以按自定义曲线进行飞行。但是DynamicPawn是使用的是地理参考坐标系,并不是标准的UE坐标系,当我们全球浏览结束后,可能需要在某一个地方进行浏览,可能就需要涉及

    2024年02月12日
    浏览(14)
  • 【稳定性】秘密武器--功能开关技术

    继上篇【稳定性:关于缩短MTTR的探索】后,看到一些线上问题应急预案采用的是回滚方案, 但是在大部分牵扯代码场景下,开关技术才是线上问题快速止血的最佳方式 。比如履约平台组的Promise作为下单黄金链路,如遇线上问题的话, 采用通用的回滚方式需要5-10+分钟(500+台

    2024年02月08日
    浏览(18)
  • 童年回忆--扫雷(包括标记功能和递归展开)--万字讲解让你学会扫雷制作

    魔王的介绍:😶‍🌫️一名双非本科大一小白。 魔王的目标:🤯努力赶上周围卷王的脚步。 魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍🔥大魔王与你分享:人生人山人海人来人往,自己自尊自爱自由自在。 小时候我们在家里刚买电脑的时候,网络还不是很发达(两三

    2023年04月14日
    浏览(9)
  • 如何通过原型修改第三方类库,来实现自己的功能而不破坏类库?手写一下

    使用原型链对第三方库进行扩展或修改是JavaScript中的常见做法。这种做法的优点是可以在不修改原始库源码的情军况下增加或修改功能。但也需要小心,因为过度的修改可能会导致与原始库的不兼容,或者出现不可预料的副作用。 下面给出一个简单的例子说明如何通过原型

    2024年02月10日
    浏览(15)
  • python tkinter多个软件界面切换功能实现

    python tkinter多个软件界面切换功能实现 小程序的实现采用python中的tkinter创建主窗口,切换窗口采用tkinter模块的的frame窗口控件进行创建,通过不同的按键调用显示不同的操作界面。操作界面的显示使用try…except…finally进行显示。思路:在tkinter中想要实现多个界面的切换,需

    2024年01月22日
    浏览(17)
  • flutter开发实战-实现首页分类目录入口切换功能

    。 在开发中经常遇到首页的分类入口,如美团的美食团购、打车等入口,左右切换还可以分页更多展示。 在pubspec.yaml引入 由于我这里按照一页8条展示,两行四列展示格式。 当列表list传入的控件时候,一共的页数为 通过列表,一页数量计算每一页应该展示多少个按钮。 一

    2024年02月14日
    浏览(16)
  • 网易云音乐开发--音乐播放暂停切换上下首功能实现

     问题就是我们点击播放,暂停之后,再次播放,它会多次发起请求。而我们现在对它的优化是,不需要重复的发起请求 这里我们通过把musicLink改为形参的方式,如果有给它传入参数,没有链接那么就让它发起请求,如果有那就继续走下去。而且我们将musicLink保存到data中 

    2024年02月06日
    浏览(13)
  • Angular实现一个简单的带tabs选项卡切换的首页导航功能

    Angular版本:16.1.1  项目结构: angular.json配置:  package.json: tsconfig.app.json: tsconfig.json: styles.scss全局样式表清除部分默认样式 一、ng命令添加4个页面组件(tabs,tab1,tab2,tab3,info),angular会自动把组件导入到app.module.ts中 二、在app.component.html里添加路由占位标签,根据路由规则,

    2024年02月12日
    浏览(15)
  • 微信小程序实现简单的点击切换功能(微信开发者工具)

    📚文章目录 🔗首先创建一个简单的切换按钮📋 如图下  📋wxml代码  📋wxss代码 🔗但是这个元素是无法点击的,所以要添加一个点击事件到这两个元素里面  📋js代码(在page({})里面添加) 📋wxml代码  🔗class使用三元表达式来继续点击判断  🔗使用bindtap绑定事件  事件的

    2024年02月09日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包