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

相关文章

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句