66. UE5 RPG 实现远程攻击武器配合角色攻击动画

2024-06-09 19:04

本文主要是介绍66. UE5 RPG 实现远程攻击武器配合角色攻击动画,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在制作游戏中,我们制作远程攻击角色,他们一般会使用弓箭,弩,弹弓等武器来进行攻击。比如你使用弓箭时,如果角色在播放拉弓弦的动画,但是弓箭武器没有对应的表现,会显得很突兀。所以,我们在这一篇文章里,将介绍如何实现在远程敌人攻击时,武器也能够实现它对应的效果。
要实现这个效果,我们需要给武器也增加一个动画蓝图,在动画蓝图中,在角色攻击时,对拉弦的那只手的位置进行监听,然后通过在动画蓝图中,修改骨骼的位置,实现在拉弓时,让弦也根本动画修改。

添加武器动画蓝图

我们的武器也是骨骼网格体,所以他们它是支持动画蓝图的,所以我们直接基于武器的骨骼创建一个动画蓝图即可。
右键,创建一个动画蓝图
在这里插入图片描述
骨骼选择使用弹弓的骨骼
在这里插入图片描述
打开动画蓝图,首先在里面添加一个状态机
在这里插入图片描述
在状态机里面设置使用武器的Idle动画
在这里插入图片描述
返回,然后在外面增加一个slot,用于播放蒙太奇,在拉弓完成后,我们要播放武器恢复默认状态的动画。
在这里插入图片描述
我们创建动画蓝图就是为了能够在动画蓝图中修改骨骼位置跟随手部移动,所以我们要在角色骨骼中设置插槽,方便武器查询位置
在这里插入图片描述
在蓝图运行时,我们将角色骨骼模型的引用存储下来
在这里插入图片描述
然后在每一帧运行时,将当前角色右手的变换存储下来,方便后续使用
在这里插入图片描述

然后我们使用Transform(Modify)Bone节点去在动画中修改骨骼的位置,理论上动画也是在修改骨骼的位置,所以
在这里插入图片描述
然后将手部插槽的变换分割
在这里插入图片描述
我们只需要使用它的位置和旋转
在这里插入图片描述
设置这里,我们需要设置使用的骨骼,并且对于变换需要设置模式和使用的空间
在这里插入图片描述
对于不需要的引脚,我们可以选择对其关闭
在这里插入图片描述
制作完成后,接着时最重要的一步,就是将动画蓝图设置给武器骨骼网格体
在这里插入图片描述
然后,你就会发现弹弓能够附着在右手上面
在这里插入图片描述
接着在项目中测试
在这里插入图片描述

控制是否启用变换

接下来,我们想使用一个变量控制当前的变换在执行技能的时候,要播放弹弓弹回的动画,所以我们需要执行关闭。
我们在弹弓的动画蓝图中,增加一个布尔变量,默认值为true,来用于设置释放需要启用变换
在这里插入图片描述
然后在动画图标里面,增加通过使用布尔混合动画,我们就实现了通过布尔变量控制是否需要切换。
在这里插入图片描述

在模型蒙太奇动画中触发骨骼通知

接下来,我们要实现在播放蒙太奇的时候,触发骨骼通知,这个通知可以在动画蓝图中监听回调,我们就可以在后续通过事件去修改变量的值。
在这里插入图片描述
我们为了防止出错,在开始时触发GrabPouch(抓住弹弓袋),然后拉动弹弓,在释放的位置松开弹弓,并在最后再抓起弹弓的弹袋,进入待命状态。
在这里插入图片描述
接下来,我们要在动画蓝图中获取到武器,由于在c++中我们没有设置可以在蓝图获取,所以修改代码
在这里插入图片描述
接下来打开动画蓝图,添加一个自定义事件,用于获取武器的动画蓝图实例
在这里插入图片描述
接下来我们要在事件开始时,调用父函数
在这里插入图片描述
然后再调用自定义事件获取武器动画蓝图实例
在这里插入图片描述
然后添加通知事件返回,在触发ReleaseRock的时候,设置变量为false,关闭变换
在这里插入图片描述
在抓住弹袋的时候,设置变量为true
在这里插入图片描述

弹弓收回设置蒙太奇

接下来,我们想实现在松开以后,播放一个弹弓攻击的蒙太奇。
先创建一个蒙太奇
在这里插入图片描述
然后在松开动画通知里面,设置蒙太奇播放
在这里插入图片描述
在这里插入图片描述

这篇关于66. UE5 RPG 实现远程攻击武器配合角色攻击动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1046037

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service