UE5 基础应用 —— 08 - 动画蓝图 简单使用

目录

一、动画蓝图

1.1 创建动画蓝图

1.2 动画蓝图组成

1.2.1 事件图表

1.2.2 动画图表

1.3 混合空间

1.3.1 创建混合空间

1.3.2 混合空间 1D 小案例

1.3.2 混合空间 2D 小案例

1.4 状态机

1.4.1 创建状态机

1.4.2 案例一  —— 女魔法剑士

1.4.3 案例二 —— 男剑士

1.5 动画蒙太奇

1.5.1 创建动画蒙太奇

1.5.2 案例一 —— 普通攻击

1.5.3 案例二 —— 重生

1.5.4 案例三 —— 远程打击

 1.5.5 案例四 —— 三连击

1.5.6 总结

1.5.7 状态机 / 动画蒙太奇

1.6 动画混合

1.6.1 Layered blend per bone(骨骼分层混合)

1.6.2 Blend Poses by bool

1.6.3 案例

1.7 动画通知

1.7.1 动画通知分类

1.7.2 通知 —— 角色起跳改进

1.7.3 通知 —— 角色攻击识别

1.7.4 通知 —— 角色造成伤害

补充 —— AI 受击击退效果

补充 —— AI 受击时停效果

补充 —— AI 受击摄像机晃动

1.7.5 通知 —— 飞行动画 bug 解决

1.7.6 通知状态 —— 添加刀光特效

1.7.7 通知 —— 添加简单特效

1.7.8 同步标记 —— 脚步同步

二、基础概念

2.1 骨骼

2.1.1 重要骨骼

2.1.2 骨骼插槽

2.2 根运动(需要根骨骼)

2.3 IK 绑定

2.3.1 创建 IK 绑定

2.3.2 IK 绑定设置

2.3.3 创建 IK 重定向器

2.3.4 IK 重定向器设置

2.3.5 创建动画蓝图(目标骨骼)

2.3.6 创建角色蓝图


一、动画蓝图

1.1 创建动画蓝图

动画蓝图 规范命名为 ABP_。

并选择合适的骨骼。

1.2 动画蓝图组成
1.2.1 事件图表

  • Event Blueprint Update Animation:动画蓝图的 Tick
  • Try Get Pawn Owner:返回挂载 ABP 的 Pawn(需要 Cast To ***)

1.2.2 动画图表

1.3 混合空间

混合空间主要用于平滑地过渡和混合多个动画状态,以创建自然、流畅的动画过渡效果。

混合空间 规范命名为 BS_。

1.3.1 创建混合空间

并选择合适的骨骼。

1.3.2 混合空间 1D 小案例

为了实现在锁定视角下角色在四个方向的移动动作,混合空间 1D 设置如下。

  • Name:MoveDir
  • 范围: -180° ~ 180°
  • Grid Divisions:沿 x 轴划分 4 个网格
  • Snap to Grid:吸附对齐
  • 取样平滑 - Weight Speed:使动画过渡自然

其中,按住 Ctrl 并滑动鼠标可查看动画效果。

1.3.2 混合空间 2D 小案例

其实我感觉混合空间 2D 更像一个容器。。。

1.4 状态机

通过状态机,你可以创建各种 状态(State),定义要在这些状态中播放的动画,并创建各类 转换(Transition)来控制何时切换到其他状态。

1.4.1 创建状态机

在动画图表中通过 State Machine 节点创建。

1.4.2 案例一  —— 女魔法剑士

在事件图表中编写逻辑。

  • Get Velocity:得到角色当前的世界速度向量(包括速度和方向)
  • Get Actor Rotation:得到角色本身的朝向(只关心 Yaw)
  • Calculate Direction:得到角色移动方向相对角色朝向的夹角
  • Is Falling:Character Movement 组件实时计算的布尔值。它在离开地面的瞬间就变成 True,触地瞬间变成 False。

【重点1】这里在设置 Move Dir 时,前面为什么要加一个判断语句呢?

因为这里有一个不起眼的小bug:角色停下时 Velocity 为零,导致 CalculateDirection 返回错误方向(0),从而一直让动画误判为“向前停”。加 Speed > 0 的判断是为了在停下时“冻结”方向,避免错误更新。

【重点2】注意角色跳跃时也有 z 轴的速度,我在案例 1.3.2 中曾经忽略了这一点。需要使用 Vector Length XY 节点(忽略 z 轴速度)。

创建状态机,同时我们还可以把我们创建的状态机保存起来。

在 MoveStateMachine 中添加状态、给状态添加动画、设置转换条件。

在给状态添加动画时,我们可以添加动画资产、混合空间等(状态机也是可以的)。同时我们可以根据需求选择是否勾选 Loop Animation。

设置转换条件如下:

当 Speed > 0 时,由 Idle 切换到 Jog。

当 Speed <= 0 时,由 Jog 切换到 Idle。

在 JumpStateMachine 中添加状态、给状态添加动画、设置转换条件。

设置转换条件如下:

当角色起跳时,Is Falling 为 True,由 Move 切换到 JumpStart。

JumpStart ——> JumpApex ——> JumpLand 无需设置转换条件,勾选自动播放即可。

当角色触地时,Is Falling 为 False,由 JumpLand 切换到 JumpEnd。

如果角色一落地就 Move,Speed > 0,这时不必傻等落地动画播完,条件立刻为 True,第一时间切回 Move,角色响应更跟手。

Time Remaining:当前动画剩余秒数。

Time Remaining(ratio):当前动画剩余百分比。

    如果角色刚触地又起跳,此时 Is Falling 又为 True。由 JumpEnd 切换到 JumpStart。

    这样我们的动画逻辑就制作好啦,当然控制角色真实地走、跑、跳,还需要在蓝图中创建实际操作。

    1.4.3 案例二 —— 男剑士

    在事件图表中编写逻辑。与案例一相同,不做赘述。

    创建状态机,同时我们还可以把我们创建的状态机保存起来。

    在 MoveStateMachine 中添加状态、给状态添加动画、设置转换条件。

    设置转换条件如下:

    当 Speed > 0 时,由 Idle 切换到 Walk。

    当 Speed <= 0 时,由 Walk 切换到 Idle。

    当 Speed > 220 时,由 Walk 切换到 Run。

    当 Speed <= 200 时,由 Run 切换到 Walk。

    在 JumpStateMachine 中添加状态、给状态添加动画、设置转换条件。

    此处略。

    这样我们的动画逻辑就制作好啦,当然控制角色真实地走、跑、跳,还需要在蓝图中创建实际操作。

    【补充】男剑士有两个切换状态的动画蒙太奇,内部有通知负责更新 bool 变量(用于切换正常 / 持剑状态)和更换武器插槽。

    1.5 动画蒙太奇

    动画蒙太奇 规范命名为 AM_。

    在动画蒙太奇中,动画资产以 组(Groups) 和 插槽(Slots) 分类。其中,组和插槽是 全局级别,不同的动画蒙太奇(同骨骼)都可以访问。

    1.5.1 创建动画蒙太奇

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值