六一的部落格


关关难过关关过,前路漫漫亦灿灿。




概览

虚幻编辑器

动画随着游戏角色的运动速度而变化


brush

最简单的可编辑几何体,我们可以修改其顶点位置,调整其他参数,然后将其转换成静态网格体


CharacterMovementComponent

负责 Character 运动,其各种属性均和 Character 运动有关


动画蓝图

Animation Blueprint

  • 动画蓝图需绑定 Skeleton Mesh
  • 命名:ABP_ 打头

动画混合

Animation Blend

流畅地从一个动画切入到另一个动画


混合空间

Blend Space

  • 能在两个骨骼动画之间创建过渡动画
  • 使用插值来得到动画姿势的中间值
  • 需绑定 Skeleton Mesh
  • 命名: 混合空间混合空间1D 均以 BS_ 打头

一维混合空间

Blend Space 1D

横轴


混合空间

Blend Space

横轴和纵轴


重新设置平台

  1. 从场景中移除Floor

  2. 添加 Geometry/Box


  3. 恢复 Box Brush 默认位置,设置长宽高



Character运动速度上限

BP_STUBaseCharacter

CharacterMovementComponent

  1. 选择CharacterMovementComponent > 细节面板 > Character Movement: Walking > MaxWalkSpeed


    MaxWalkSpeed 即 Character 的最大运动速度,单位 cm/s

    虚幻引擎里的步长使用 cm

  2. 修改 MaxWalkSpeed ,当速度改为 1600 时,可以看到单位时间内移动的距离增加,而跑步动画缺少对应的加速过程


获取实时速度并打印

BP_STUBaseCharacter

  1. EventGraph 实现

    -
    GetVelocity函数 获取Character速度 获得Actor各个方向上的速度,保存在FVector中
    FVector::VectorLength 获得速度标量
    PrintString 在屏幕上输出实时速度 PrintString 使用 AddOnScreenDebugMessage


    可以看到加速过程

  2. 移除打印


创建动画蓝图ABP_BaseCharacter

Animation Blueprint


创建文件夹Content/Players/Animations


方法一: 基于Skeleton Mesh创建动画蓝图

选中ExternalContent/Animation/Characters/HeroTPP/HeroTPP > 右键 > Create > AnimBlueprint



方法二: 在指定位置创建动画蓝图

  1. 去到 Content/Player/Animations,右键 > Animation > 选择Animation Blueprint


  2. 选择 HeroTPP_Skeleton


  3. 命名为 ABP_BaseCharacter



在蓝图编辑器中查看动画蓝图

ABP_BaseCharacter

-
EventGraph 事件图表 处理各种动画事件;像使用 Tick 一样使用 EventBlueprintUpdateAnimation
AnimGraph 动画图表 处理所有动画;可以将动画资产作为 OutputPose 的输入
AssetBrowser 动画资产窗口 可以从 Window > AssetBrowser 打开,罗列了 SkeletonMesh 所有相关动画



为游戏角色设置动画时使用动画蓝图


为ABP_BaseCharacter设置输入

动画图表

  1. Run_Fwd 作为 OutputPose 的输入


  2. 设置 Run_Fwd 重复播放

    选中Run_Fwd > Details > Settings > 使能 LoopAnimation



让Character使用动画蓝图

BP_STBaseCharacter

-
Animation Mode Use Animation Blueprint
Anim Class ABP_BaseCharacter



查看动画资产

去到Content/ExternalContent/Animation/Animations/TTP_Animations,双击 Run_Fwd


可在 AssetBrowser 中选择其他动画


混合空间资产

Blend Space

速度从 0 - 600 ,动画从 Idle 过渡到 Run_Fwd


创建BS_Locomotion_Walk_1D

  1. 去到Content/Player/Animations,右键


  2. 选择 HeroTPP_Skeleton


  3. 命名为 BS_Locomotion_Walk_1D



配置BS_Locomotion_Walk_1D

  1. 双击打开 BS_Locomotion_Walk_1D


  2. 配置横轴

    Asset Details > Axis Settings > Horizontal Axis

    说明
    Name 名称 Velocity
    Minimum Axis Value 轴最小值 0
    Maximum Axis Value 轴最大值 600 游戏角色运动速度上限
    Grid Divisions 过渡区间 4 使用默认值;和可以添加的动画个数有关


  3. 配置动画

    动画资产 Velocity
    起点 Idle 0
    终点 Run_Fwd 600
  4. 查看插值

    系统 键位
    Windows Control
    MacOS Command

    按下键位,水平移动鼠标,绿色X随之在起点和终点间移动,视口展示过渡动画



将BS_Locomotion_Walk_1D作为动画蓝图输入

ABP_BaseCharacter


添加变量Velocity

MyBlueprint 添加变量 Velocity ,在Details设置名称和类型



设置变量Velocity

EventGraph

  1. 将变量Velocity拖动到EventGraph, 选择设置变量值



  2. EventBlueprintUpdateAnimation 之后,执行 SetVelocity


  3. GetPawnOwner 返回 Pawn 实例的引用, 变量 Velocity 的输入是 Actor 实时速度



设置动画蓝图输入

AnimGraph

  1. 将BS_Locomotion_Walk_1D作为OutputPose的输入


  2. 将变量Velocity拖动到AnimGraph, 选择获取变量值



  3. 将变量Velocity作为BS_Locomotion_Walk_1D的输入


为游戏角色添加向前走路动画



概览

虚幻编辑器

动画随着游戏角色的运动速度而变化


brush

最简单的可编辑几何体,我们可以修改其顶点位置,调整其他参数,然后将其转换成静态网格体


CharacterMovementComponent

负责 Character 运动,其各种属性均和 Character 运动有关


动画蓝图

Animation Blueprint

  • 动画蓝图需绑定 Skeleton Mesh
  • 命名:ABP_ 打头

动画混合

Animation Blend

流畅地从一个动画切入到另一个动画


混合空间

Blend Space

  • 能在两个骨骼动画之间创建过渡动画
  • 使用插值来得到动画姿势的中间值
  • 需绑定 Skeleton Mesh
  • 命名: 混合空间混合空间1D 均以 BS_ 打头

一维混合空间

Blend Space 1D

横轴


混合空间

Blend Space

横轴和纵轴


重新设置平台

  1. 从场景中移除Floor

  2. 添加 Geometry/Box


  3. 恢复 Box Brush 默认位置,设置长宽高



Character运动速度上限

BP_STUBaseCharacter

CharacterMovementComponent

  1. 选择CharacterMovementComponent > 细节面板 > Character Movement: Walking > MaxWalkSpeed


    MaxWalkSpeed 即 Character 的最大运动速度,单位 cm/s

    虚幻引擎里的步长使用 cm

  2. 修改 MaxWalkSpeed ,当速度改为 1600 时,可以看到单位时间内移动的距离增加,而跑步动画缺少对应的加速过程


获取实时速度并打印

BP_STUBaseCharacter

  1. EventGraph 实现

    -
    GetVelocity函数 获取Character速度 获得Actor各个方向上的速度,保存在FVector中
    FVector::VectorLength 获得速度标量
    PrintString 在屏幕上输出实时速度 PrintString 使用 AddOnScreenDebugMessage


    可以看到加速过程

  2. 移除打印


创建动画蓝图ABP_BaseCharacter

Animation Blueprint


创建文件夹Content/Players/Animations


方法一: 基于Skeleton Mesh创建动画蓝图

选中ExternalContent/Animation/Characters/HeroTPP/HeroTPP > 右键 > Create > AnimBlueprint



方法二: 在指定位置创建动画蓝图

  1. 去到 Content/Player/Animations,右键 > Animation > 选择Animation Blueprint


  2. 选择 HeroTPP_Skeleton


  3. 命名为 ABP_BaseCharacter



在蓝图编辑器中查看动画蓝图

ABP_BaseCharacter

-
EventGraph 事件图表 处理各种动画事件;像使用 Tick 一样使用 EventBlueprintUpdateAnimation
AnimGraph 动画图表 处理所有动画;可以将动画资产作为 OutputPose 的输入
AssetBrowser 动画资产窗口 可以从 Window > AssetBrowser 打开,罗列了 SkeletonMesh 所有相关动画



为游戏角色设置动画时使用动画蓝图


为ABP_BaseCharacter设置输入

动画图表

  1. Run_Fwd 作为 OutputPose 的输入


  2. 设置 Run_Fwd 重复播放

    选中Run_Fwd > Details > Settings > 使能 LoopAnimation



让Character使用动画蓝图

BP_STBaseCharacter

-
Animation Mode Use Animation Blueprint
Anim Class ABP_BaseCharacter



查看动画资产

去到Content/ExternalContent/Animation/Animations/TTP_Animations,双击 Run_Fwd


可在 AssetBrowser 中选择其他动画


混合空间资产

Blend Space

速度从 0 - 600 ,动画从 Idle 过渡到 Run_Fwd


创建BS_Locomotion_Walk_1D

  1. 去到Content/Player/Animations,右键


  2. 选择 HeroTPP_Skeleton


  3. 命名为 BS_Locomotion_Walk_1D



配置BS_Locomotion_Walk_1D

  1. 双击打开 BS_Locomotion_Walk_1D


  2. 配置横轴

    Asset Details > Axis Settings > Horizontal Axis

    说明
    Name 名称 Velocity
    Minimum Axis Value 轴最小值 0
    Maximum Axis Value 轴最大值 600 游戏角色运动速度上限
    Grid Divisions 过渡区间 4 使用默认值;和可以添加的动画个数有关


  3. 配置动画

    动画资产 Velocity
    起点 Idle 0
    终点 Run_Fwd 600
  4. 查看插值

    系统 键位
    Windows Control
    MacOS Command

    按下键位,水平移动鼠标,绿色X随之在起点和终点间移动,视口展示过渡动画



将BS_Locomotion_Walk_1D作为动画蓝图输入

ABP_BaseCharacter


添加变量Velocity

MyBlueprint 添加变量 Velocity ,在Details设置名称和类型



设置变量Velocity

EventGraph

  1. 将变量Velocity拖动到EventGraph, 选择设置变量值



  2. EventBlueprintUpdateAnimation 之后,执行 SetVelocity


  3. GetPawnOwner 返回 Pawn 实例的引用, 变量 Velocity 的输入是 Actor 实时速度



设置动画蓝图输入

AnimGraph

  1. 将BS_Locomotion_Walk_1D作为OutputPose的输入


  2. 将变量Velocity拖动到AnimGraph, 选择获取变量值



  3. 将变量Velocity作为BS_Locomotion_Walk_1D的输入