[玩转UE4/UE5动画系统>应用篇>功能模块] 之 倾斜叠加(Lean Additive)(ALS V4实现方案详解)

本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式。教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏《玩转UE4/UE5动画系统》。教程中使用的资源及工程将以开源项目的形式更新到GitHub:玩转UE4上。

在这里插入图片描述
工程文件: 玩转UE4(GitHub)
在这里插入图片描述

0. 效果演示

[玩转UE4/UE5动画系统>应用篇>功能模块] 之 倾斜叠加(Lean Additive)(ALS V4实现方案详解)

注: ALS V4是背后第三人称视角,我提供的工程是横板视角。但是倾斜叠加实现的基本原理是大体相同的。

从上面演示视频的倾斜叠加的关闭和开启对比中,我们可以看到ALS V4的倾斜叠加(Lean Additive),由两大部分组成:地面和空中。

我们先以突然退步跑为例解释一下地面部分的效果。下图中,A是角色的Idle动画状态,B是角色退步跑的动画状态(原始动画提供的状态),这里的倾斜叠加就是要生成一个C状态,当角色"突然"退步跑时,在瞬时加速度的作用下先由A状态到C状态,速度稳定后再回到B状态。

注意: 影响倾斜的是加速度而不是速度

在这里插入图片描述

空中部分相对简单,B是跳跃动画原始状态,A是角色叠加了起跳前倾斜角度的状态,角色跳到空中会忽略空气阻力的话,在惯性作用下会保持着这个角度。

在这里插入图片描述

总而言之,倾斜叠加就是要在原始动画的基础上动态叠加出加速度以及惯性的感觉。虽然效果很细微,但是还是可以让动画更生动。

1. 概述与原理

在这里插入图片描述

倾斜效果是由预设的倾斜Pose通过ApplyAdditive运算,在Local Space上叠加到原始动画上实现的。因此,我们只要为地面和空中状态分别构造出一个如下的BlendSpace作为倾斜Pose,然后根据当前加速度或速度(惯性)计算出合适的FB(前后向轴系数-1到1)和 LR(左右向轴系数-1到1)。下文中我们会称由FB和LR构成的结构体LeanAmount倾斜系数

在这里插入图片描述

2. 混合空间

上面已经给出了混合空间的构造方法,需要注意的是其中每个动画片段的Additive Settings都要按照下图红框中设置。

在这里插入图片描述

注:本文是横板游戏实际上不需要LR向的倾斜Pose,不过既然ALS中有现成的素材,我也加进去了。

3. 动画蓝图 事件图

3.1 总体流程

Update Animation方法
在这里插入图片描述

3.2 空中倾斜系数

3.2.1 Update in Air Values方法

在这里插入图片描述

3.2.2 Calculate in Air Lean Amount方法

在这里插入图片描述
下面是ALS V4 中的Lean in Air Curve曲线,注意这个曲线的走向是自右向左的,因为下落过程中fallspeed值越来越小。

在这里插入图片描述

3.3 地面倾斜系数

3.3.1 Update Movement Values方法

在这里插入图片描述

3.3.2 Calculate Relative Acceleration Amount方法

在这里插入图片描述
计算加速度向量和速度向量的数量积,数量积大于零为加速运动,反之为减速运动。我提供的工程是横版游戏,所以在计算相对加速度时和ALS V4原版有些区别。

下面是ALS V4原始版本中的Calculate Relative Acceleration Amount方法

在这里插入图片描述

4. 动画蓝图 动画图

在这里插入图片描述

5. 动画曲线

在地面倾斜叠加的部分,还可以通过Weight_Gait 动画曲线控制当前动画对倾斜系数的响应大小

在这里插入图片描述

Run动画对倾斜系数Lean Amount最敏感,Weight_Gait 值为2。

在这里插入图片描述

Walk动画其次,Weight_Gait 值为1。

在这里插入图片描述

Idle时动画其次,Weight_Gait 值为0。

在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
这是一个XML文件的一部分,属于IntelliJ IDEA的配置文件之一,可能是用于配置文件编辑器的行为。这个XML元素的名称是`component`,它有一个`name`属性,值为`FileEditorManager`。在这个元素中,有一个`leaf`子元素,具有一个`SIDE_TABS_SIZE_LIMIT_KEY`属性,表示文件编辑器的侧边栏选项卡的大小限制。`leaf`元素表示一个文件编辑器的标签页,具有一个`file`子元素和一个`entry`子元素。`file`元素表示文件编辑器的文件,具有一个`leaf-file-name`属性,表示文件的名称,以及`pinned`和`current-in-tab`属性,分别表示文件是否被钉住和文件是否在标签页中。`entry`元素表示文件编辑器的输入项,具有一个`file`属性,表示文件的URL。在`entry`元素中,有一个`provider`子元素,表示文件编辑器的提供者,具有一个`selected`和`editor-type-id`属性,分别表示提供者是否被选中和提供者的编辑器类型。在`provider`元素中,有一个`state`子元素,表示文件编辑器的状态,具有一个`relative-caret-position`属性,表示光标的相对位置。在`state`元素中,有一个`caret`子元素,表示光标的位置和选择区域,具有`line`、`column`、`lean-forward`、`selection-start-line`、`selection-start-column`、`selection-end-line`和`selection-end-column`属性。在`state`元素中,还有一个`folding`子元素,表示文件编辑器的折叠状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发游戏的老王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值