使用工具:UE5

使用资源:

【动画包】Carnegie Mellon University - CMU Graphics Lab - motion capture library

【人物模型】Steam平台 -- Vroid studio 1.3.0

【武器模型】虚幻商城 -- free fantasy weapon sample

目录

一、人物与武器模型的绑定

1.1 在人物骨骼网格体中安排一个适当的插槽

1.2 在人物蓝图处新建骨骼网格体

1.3 调整剑为初始不可视

二、持剑状态的切换

2.1 新建人物蓝图变量,用于切换状态

2.2 动画蓝图更新状态机

三、整体逻辑

四、具体实现

4.1 普攻动画添加通知

4.2 人物蓝图进行设置

4.3 多轮普攻的衔接

4.4 人物移动组件,攻击时我直接设置不移动,但这个根据需求即可


一、人物与武器模型的绑定

1.1 在人物骨骼网格体中安排一个适当的插槽

        首先进入人物骨骼网格体,在手部位置新建一个插槽(如果不用手持武器就放在持握的地方),当然这里直接用模型本身在手指处的插槽实现效果差不多。

1.2 在人物蓝图处新建骨骼网格体

在人物网格体下方新增一个骨骼网格体组件,细节处指定武器模型,在右侧【插槽】栏目的父项套接字下输入人物骨骼里头的对应的插槽名称。

然后在视口中调整武器持握位置,此处mark两点,第一,如果有条件可以直接将预览动画设置为使用武器状态下的动画,手掌持握处可以和剑柄正好插入,看起来效果好很多;第二,调整好剑的角度,静态差别不大,动起来差很多,最好参照最后动画的实现效果多调试。

1.3 调整剑为初始不可视

二、持剑状态的切换

2.1 新建人物蓝图变量,用于切换状态

蓝图如下所示,mark几点:

1、这里碰撞检测还要改。武器最后是要通过判定重叠事件来进行伤害判定的,而且是在进行攻击时才开始判定,且判定范围一般并非自身网格体的大小,需要适当扩大,包括一些特效之类,因此这里的碰撞启用的对象后面还要修改,且需要改到普攻实现的蓝图处。

2、设置可视性这里关系到人物拔剑状态,我预设的是后期加入粒子系统剑自动出现在人物手中【还缺一个粒子效果】,当然也可以剑固定于人物背部再拔刀,就需要 【在动画状态机插入一个新状态并实现转换】,实现效果同理。

3、flip flop 很好用,适用于蹲伏、瞄准镜、UI界面等场合。

2.2 动画蓝图更新状态机

新建Anim蓝图变量:isSword,用于进行两个状态之间的转换(当然可以直接读取,但不方便调用

新建1D动画混合空间:速度维度,持剑时的idle和walk等(混合采样集如图

逻辑是:

1、Anim蓝图获取人物蓝图IsSword变量

2、利用该变量进行两个动画状态转换

3、持剑状态使用新的混合空间

随后在后面更新所有普攻动作,我这里设置了四段:

逻辑是:1-2-3-4-1 (均可返回持剑状态)

新建变量:back_sword用于四个普攻返回持剑状态

新建4个变量,对应(持剑-1,1-2,2-3,3-4)四个切换

三、整体逻辑

最主要的需求很简单,要在角色普攻动作结束前获取【1、是否继续攻击的指令】【2、执行攻击】

人物普攻的逻辑很多,这里拟定一个常见的:

攻击分为【前摇-攻击实现-后摇】三部分,一般一个游戏的角色普攻都会有非常明显的后摇,在连续点按时,不可取消后摇(即普攻连击时,后摇节点固定),这里我们则取后摇末端的某个节点来对玩家是否要进行连续攻击进行判定(A点),然后在B节点(可以适当提前)启用判定,也就是需要在AB区间内按下按钮才可触发连续平A。

(最开始没有放B节点,一二两段间隔按一下鼠标,就直接判定了第三段,如果动作时长较高,这种延迟性的手感很差,建议加上一个B重置判定。

具体情况需要根据游戏具体的设计来聊,如LOL的后摇能奖励玩家更频繁地操作以达到更高输出和技能躲闪,一些ARPG则是普攻后段数设置较高的数值倍率,玩家在追求高伤害的同时承担更多风险。

四、具体实现

4.1 普攻动画添加通知

在下方添加两个通知,第一个为重置(开始)连击判定,第二个为结算连击判定

其中最后一击较为特殊,结算通知需单独处理。

随后在动画蓝图中,(需要动画绑定至同一骨骼/进入该动画蓝图才可以调用通知),具体函数和变量在下一节人物蓝图中实现。

4.2 人物蓝图进行设置

新建变量:

1、IsAttack 用于记录是否在攻击状态下

2、AttackSequence用于记录第几个连击

3、continueAttack用于记录是否连击

1、这一块是基础设定,back是动画蓝图中用于使普攻状态返回持剑状态的变量,每次普攻结束返回idle/run后都会让back为true。

这里用蓝图看着很复杂,代码会更清楚

2、上图中,若玩家idle/run状态下初次普攻点击,则isAttack变为true,设定好攻击顺序后直接进入下图中的int switch普攻模式。

其后的点击将使得continue attack为true供动画后摇时判定。

3、而其他攻击的判定,则是上文中【动画通知---AnimBP调用人物BP custom event】这个就是123段普通后摇结束时的连击判定函数,因为首轮攻击1段前面没人能调用该函数且有变量尚未初始化,所以需要单独手动连接;

利用攻击序列来进行计数,基本逻辑就是【增加攻击序列、调整Anim BP的状态bool变量】

4.3 多轮普攻的衔接

一轮普攻4次,多轮普攻则需要重置,先简单写一个初始化函数。

然后在两种情况下调用,第一,使用普攻后,未在判定时间内按下输入,上小节【连续平A中直接返回该reset函数】,第二,一轮普攻结束后,需要重置,但不同的是,is attack不需要重置,然后直接调用连续平A函数即可。因为:

1、isAttack在理论上,在连续平A函数中用不到,但不改很难受

2、重置是,并未重置continueAttack变量,因为第一种情况该变量为false不需,第二种情况其为true直接就可以进行连续普攻的下一轮判定了。

4.4 人物移动组件,攻击时我直接设置不移动,但这个根据需求即可

设置运动模式 or disable movement两个均可用,在实现攻击动画和reset两处。

【虚幻5学习笔记①】连续普攻的判定和实现相关推荐

  1. 虚幻4学习笔记(10)蓝图接口、拾取物品-射线检测

    虚幻4学习笔记 蓝图接口 拾取物品-射线检测 骨架网格体和静态网格体的区别 骨架网格体设置碰撞 B站UP谌嘉诚课程:https://www.bilibili.com/video/BV164411Y73 ...

  2. 虚幻4学习笔记(2)BSP画刷

    虚幻4学习笔记 BSP画刷 画刷用途 缩放拉伸问题 设置中空和墙壁厚度 固体性 为模型添加材质 BSP画刷工具编辑 设置玩家控制 静态网格体 (只能针对画刷生成的物体) 过滤所有静态网格体后 合成为一 ...

  3. 虚幻4学习笔记(7)蓝图通信、变量引用、物体自转、点名系统

    虚幻4学习笔记 蓝图通信 角色加速(案例) 变量引用 方法一 提升变量 方法二 添加变量后设置 变量有效性 物体自转 点名系统 控制单个旋转 控制所有物体旋转 B站UP谌嘉诚课程:https://ww ...

  4. 虚幻四学习笔记(1)—— 基础操作及模板

    目录 相关网址 基础操作 下载及安装 创建工程 编辑器语言 窗口介绍 基础移动操作 模板 简单的导入资源 第一人称模板 Flying模板 Puzzle模板 Rolling模板 俯视角(Top Down ...

  5. 从unity到unreal4 虚幻4学习笔记 一 : ue4与vs studio、vs code开发环境的安装与配置

    前言 学习ue4的理由 我是个资深unity玩家,自认为可以使用unity做任何事.对虚幻的仰慕纯属技术信仰,懂的都懂不多解释.我并不打算放弃unity,正所谓艺多不压身,多储备点技术栈也没坏处. u ...

  6. 虚幻四学习笔记(2)—— 学习途径

    官方途径 虚幻引擎官网https://www.unrealengine.com. 虚幻引擎文档https://docs.unrealengine.com/,如果想要看中文文档,则把重定向后的url中的 ...

  7. 虚幻引擎学习笔记——Month1 Week2

    Day1 学习程序的方法: 先模仿课堂案例,再将其灵活运用到作业中 把每次遇到的问题和错误及相应的解决方法记录下来 程序基础: 变量:程序运行时存储数据的手段(计算机内存中开辟一块存储空间,当程序用到 ...

  8. 虚幻引擎学习笔记——Month1 Week3

    Day1 上周简单总结 创建基础数据类型变量,如布尔.浮点.整型等,系统会自动加默认值.而自己创建的变量系统不会赋默认值,为防止变量为空所带来的问题,需要自己对其赋值 对象类型的变量:既可以存该对象本 ...

  9. 虚幻C++学习笔记01--官方案例:FloatingActor

    首先接触虚幻文档中提供给新手的第一个案例 悬浮旋转方块 具体操作的步骤可以点击下方链接: 编程快速入门 | 虚幻引擎文档 (unrealengine.com) 其中整理一下在这个初学课堂中学到的内容: ...

最新文章

  1. 简述用决策表设计测试用例的步骤_决策表快速入门
  2. 用typedef定义函数指针类型(转)
  3. ubuntu下使用openocd+jlink进行STM32开发调试
  4. UIViewController加载过程
  5. 显示脸上的关键点的程序
  6. mysql二进制日志开启方法_mysql中如何开启binlog?开启二进制日志文件?binary log?
  7. python利用集合的无重复性_利用Python程序完成ABAQUS中的一些重复性操作
  8. 计算机视觉FPN: 特征金字塔网络
  9. python大家都是怎么学的_你们都是怎么学 Python 的?
  10. 出海业务网络加速方案技术能力详解
  11. php去除空格和换行
  12. 前端基础项目(一)学成在线网站静态网页,HTML+CSS,简单基础,附完整源码
  13. 小程序对wxParse 使用
  14. 为什么Redis单线程却能支撑高并发?
  15. 网站备案后服务器到期,域名备案后服务器到期
  16. js 限制鼠标移动范围
  17. 抖音最疯狂的辞职代码,你下载了吗?
  18. MySQL系列:innodb源码分析之表空间管理
  19. LogiScope100MHZ 16通道逻辑分析仪
  20. c语言课程设计北京电子工业出版社,c语言图书管理系统课程设计报告

热门文章

  1. 如何用canvas绘制五角星
  2. uEditor setContent方法报错Uncaught TypeError: Cannot read property ‘innerHTML‘ of undefined
  3. ModelSim 使用【一】介绍
  4. 使用Xamarin.Android中的Google登录OAuth 2.0对用户进行身份验证
  5. 中国或逐渐放开部分网络管制背后:这些垂直行业有望焕新
  6. 抢鞋软件bot服务器系统,国内bot抢鞋软件
  7. 航班信息的查询与检索Java,航班信息查询与检索(java)
  8. 畅游Internet——叠加多条宽带
  9. 微信H5支付实战踩坑
  10. 我的第一个hbuilder项目,基于h5的五子棋游戏