为游戏角色添加向前走路动画
2023年6月11日 2024年1月11日
概览
虚幻编辑器
动画随着游戏角色的运动速度而变化
brush
最简单的可编辑几何体,我们可以修改其顶点位置,调整其他参数,然后将其转换成静态网格体
CharacterMovementComponent
负责 Character
运动,其各种属性均和 Character
运动有关
动画蓝图
Animation Blueprint
- 动画蓝图需绑定
Skeleton Mesh
- 命名:ABP_ 打头
动画混合
Animation Blend
流畅地从一个动画切入到另一个动画
混合空间
Blend Space
- 能在两个骨骼动画之间创建过渡动画
- 使用插值来得到动画姿势的中间值
- 需绑定
Skeleton Mesh
- 命名:
混合空间
和混合空间1D
均以 BS_ 打头
一维混合空间
Blend Space 1D
横轴
混合空间
Blend Space
横轴和纵轴
重新设置平台
-
从场景中移除Floor
-
添加
Geometry/Box
-
恢复
Box Brush
默认位置,设置长宽高
Character运动速度上限
BP_STUBaseCharacter
CharacterMovementComponent
-
选择CharacterMovementComponent > 细节面板 > Character Movement: Walking > MaxWalkSpeed
MaxWalkSpeed
即 Character 的最大运动速度,单位cm/s
虚幻引擎里的步长使用
cm
-
修改
MaxWalkSpeed
,当速度改为1600
时,可以看到单位时间内移动的距离增加,而跑步动画缺少对应的加速过程
获取实时速度并打印
BP_STUBaseCharacter
-
在
EventGraph
实现- GetVelocity函数 获取Character速度 获得Actor各个方向上的速度,保存在FVector中 FVector::VectorLength 获得速度标量 PrintString 在屏幕上输出实时速度 PrintString
使用AddOnScreenDebugMessage
可以看到加速过程
-
移除打印
创建动画蓝图ABP_BaseCharacter
Animation Blueprint
创建文件夹Content/Players/Animations
方法一: 基于Skeleton Mesh创建动画蓝图
选中ExternalContent/Animation/Characters/HeroTPP/HeroTPP > 右键 > Create > AnimBlueprint
方法二: 在指定位置创建动画蓝图
-
去到 Content/Player/Animations,右键 > Animation > 选择Animation Blueprint
-
选择
HeroTPP_Skeleton
-
命名为
ABP_BaseCharacter
在蓝图编辑器中查看动画蓝图
ABP_BaseCharacter
- | ||
---|---|---|
EventGraph | 事件图表 | 处理各种动画事件;像使用 Tick 一样使用 EventBlueprintUpdateAnimation |
AnimGraph | 动画图表 | 处理所有动画;可以将动画资产作为 OutputPose 的输入 |
AssetBrowser | 动画资产窗口 | 可以从 Window > AssetBrowser 打开,罗列了 SkeletonMesh 所有相关动画 |
为游戏角色设置动画时使用动画蓝图
为ABP_BaseCharacter设置输入
动画图表
-
将
Run_Fwd
作为OutputPose
的输入 -
设置
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
-
去到Content/Player/Animations,右键
-
选择
HeroTPP_Skeleton
-
命名为
BS_Locomotion_Walk_1D
配置BS_Locomotion_Walk_1D
-
双击打开
BS_Locomotion_Walk_1D
-
配置横轴
Asset Details > Axis Settings > Horizontal Axis
说明 Name 名称 Velocity Minimum Axis Value 轴最小值 0 Maximum Axis Value 轴最大值 600 游戏角色运动速度上限 Grid Divisions 过渡区间 4 使用默认值;和可以添加的动画个数有关 -
配置动画
动画资产 Velocity 起点 Idle 0 终点 Run_Fwd 600 -
查看插值
系统 键位 Windows Control MacOS Command 按下键位,水平移动鼠标,绿色X随之在起点和终点间移动,视口展示过渡动画
将BS_Locomotion_Walk_1D作为动画蓝图输入
ABP_BaseCharacter
添加变量Velocity
在 MyBlueprint
添加变量 Velocity
,在Details设置名称和类型
设置变量Velocity
EventGraph
-
将变量Velocity拖动到EventGraph, 选择设置变量值
-
在
EventBlueprintUpdateAnimation
之后,执行SetVelocity
-
GetPawnOwner
返回Pawn
实例的引用, 变量Velocity
的输入是Actor
实时速度
设置动画蓝图输入
AnimGraph
-
将BS_Locomotion_Walk_1D作为OutputPose的输入
-
将变量Velocity拖动到AnimGraph, 选择获取变量值
-
将变量Velocity作为BS_Locomotion_Walk_1D的输入