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

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

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

添加武器动画蓝图

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

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

控制是否启用变换

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

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

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

弹弓收回设置蒙太奇

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 1. 面向对象的由来
  • MyBatis面试题系列三
  • 何为屎山代码?
  • Facebook海外户|如何制作出引人注目的Facebook广告素材?
  • lua vm 五: upvalue
  • django ORM model update常规用法
  • java面试题:java三大特性多态又是如何实现的
  • 作文笔记11 推荐一本书
  • 磁力狗ciligou,磁力链接使用步骤
  • Java--Math类和Random类
  • 【设计模式】面向对象与UML
  • uni-app加持下的Vue开发:效率与功能的双赢
  • requests库的常用方法
  • 数据结构--第七章--树和二叉树
  • 调研管理系统的设计
  • 深入了解以太坊
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  •  D - 粉碎叛乱F - 其他起义
  • echarts的各种常用效果展示
  • Git同步原始仓库到Fork仓库中
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java 多线程编程之:notify 和 wait 用法
  • JAVA并发编程--1.基础概念
  • Java基本数据类型之Number
  • js操作时间(持续更新)
  • js如何打印object对象
  • JS专题之继承
  • overflow: hidden IE7无效
  • PHP CLI应用的调试原理
  • python3 使用 asyncio 代替线程
  • SpringBoot 实战 (三) | 配置文件详解
  • uva 10370 Above Average
  • Vue.js-Day01
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 微信小程序填坑清单
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (2)MFC+openGL单文档框架glFrame
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (接口自动化)Python3操作MySQL数据库
  • (十) 初识 Docker file
  • (十一)手动添加用户和文件的特殊权限
  • (原)本想说脏话,奈何已放下
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .考试倒计时43天!来提分啦!
  • :=
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)