基于运动的混合

用于混合角色的行走和慢跑动画的混合空间示例。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

混合空间就是能在 动画图(AnimGraph) 中采样的特殊资源,基于两个输入值实现动画混合。 可利用动画蓝图中的一个可用标准混合节点对基于单输入的两个动画进行简易混合。 混合空间可基于多个值(目前仅限两个)实现多个动画间更为复杂的混合。

在本操作指南中,我们将使用一个混合空间,根据角色的运动速度和运动方向来混合行走和慢跑动画。

EndResultImage.png

步骤

在本指南中,我们使用 蓝图第三人称模板(Blueprint Third Person Template) 项目,并在项目中添加了 动画初学者包(Animation Starter Pack)。

AnimationAssetPack.png

您可以从Epic启动程序通过 商城 免费下载动画初学者包。

  1. 在 Content/ThirdPersonBP/Blueprints 文件夹中的项目中,打开 ThirdPersonGameMode 并将 默认Pawn类(Default Pawn Class) 设置为 Ue4ASP_Character。

    BlendSpace1.png

    这样我们就可以在"动画初学者包"项目中使用之前创建的可播放角色。

  2. 在关卡中,选择 ThirdPersonCharacter 并从关卡中将其删除。

    BlendSpace2.png

    我们需要从关卡中删除该角色,以便产生上一步的角色。

  3. 在 Content/AnimStarterPack/UE4_Mannequin/Mesh 文件夹中,右键单击 UE4_Mannequin 并在 创建(Create) 下面,选择 混合空间(Blend Space) 并指定名称。

    BlendSpace3.png

    混合空间资源需要引用一个骨架资源,这里我们使用快捷键从这个骨架资源创建混合空间,并将它命名为 MyBlendSpace。

  4. 在该混合空间中,在 资源细节(Asset Details) 面板的 轴设置(Axis Settings) 中,添加以下值:

    BlendSpace4.png

    水平轴将确定我们移动的 方向(Direction),单位为度:

    水平轴设置

    值

    名称(Name)

    方向(Direction)

    最小轴值(Minimum Axis Value)

    -180

    最大轴值(Maximum Axis Value)

    180

    网格分区数量(Number of Grid Divisions)

    4

    插值时间(Interpolation Time)

    0

    插值类型(Interpolation Type)

    平均插值(Averaged Interpolation)

    垂直轴将确定角色的移动 速度(Speed):

    垂直轴设置

    值

    名称(Name)

    速度(Speed)

    最小轴值(Minimum Axis Value)

    0

    最大轴值(Maximum Axis Value)

    250

    网格分区数量(Number of Grid Divisions)

    4

    插值时间(Interpolation Time)

    0

    插值类型(Interpolation Type)

    平均插值(Averaged Interpolation)

  5. 在 资源浏览器(Asset Browser) 中,将 Walk_Fwd_Rifle_Ironsights 动画拖到网格上的中下方位置。

    BlendSpace5.png

    这将成为进入这个混合空间时的起始位置。

  6. 将 Walk_Lt_Rifle_Ironsights 动画拖到下面的位置 1,将 Walk_Rt_Rifle_Ironsights 动画拖到位置 2。

    BlendSpace6.png

    这里放置的是左右移动时要使用的动画。

  7. 将 Walk_Bwd_Rifle_Ironsights 动画拖到下面的位置 1 和 2。

    BlendSpace7.png

    这里放置的是向后移动时要使用的动画。

  8. 从 资源浏览器(Asset Browser),将 Jog_Fwd_Rifle 动画拖到网格上的中上方位置。

    BlendSpace8.png

    这样,在速度达到最大值250且不是左右移动时,我们可以使用另一个动画,向前慢跑。

  9. 将 Jog_Lt_Rifle 动画拖到下面的位置 1,将 Jog_Rt_Rifle 动画拖到位置 2。

    BlendSpace9.png

  10. 将 Jog_Bwd_Rifle 动画拖到下面的位置 1 和 2。

    BlendSpace10.png

  11. 在 Content/AnimStarterPack 文件夹中,打开 UE4ASP_HeroTPP_AnimBlueprint,然后在 我的蓝图(My Blueprint) 面板中,双击 运动 图形。

    BlendSpace11.png

  12. 双击 慢跑 状态打开其图形。

    BlendSpace12.png

    该状态机(State Machine)已经包含了一个慢跑状态,而该状态又包含一个不同慢跑动画的混合空间。

  13. 从 资源浏览器(Asset Browser),将 MyBlendSpace 资源拖到图形,并按以下所示更换 BS_Jog 混合空间。

    BlendSpace13.png

    默认混合空间不包括行走状态,而我们的混合空间则包括行走状态,因此用我们的混合空间替换默认混合空间!

  14. 在 Content/AnimStarterPack 文件夹汇总,打开 Ue4ASP_Character。

  15. 在图形中找到标记为 下蹲(Crouch) 的部分,将其删除以移除警告错误。

    BlendSpace14.png

    默认情况下,动画初学者包为下蹲创建了绑定,而我们的项目则没有。在该示例中,我们将移除下蹲行走的能力。

  16. 在图形中单击右键,并添加 左Shift 键事件,然后将 CharacterMovement 从 组件(Components) 选项卡拖到图形。

    BlendSpace15.png

    当我们按住左Shift按钮时,会从行走切换到慢跑。

  17. 从 角色运动(CharacterMovement) 节点拖出引线,并将 按下(Pressed) 和 松开(Released) 的**设置最大行走速度(Set Max Walk Speed) 分别设置为值 250 和 100**。

    BlendSpace17.png

    我们根据是否按下左Shift键来更改运动速度,继而在游戏中更改角色的运动速度。

  18. 单击 角色运动(CharacterMovement) 组装件,然后在 细节(Details) 面板中,将 最大行走速度(Max Walk Speed) 设置为 100。

    BlendSpace20.png

    我们需要更新角色的默认运动速度,以使他们开始行走。

  19. 在 组件(Components) 选项卡中单击 胶囊组件(CapsuleComponent),并在 细节(Details) 面板中,选中 在游戏中隐藏(Hidden in Game) 选项。

    BlendSpace18.png

    这会关闭游戏中的碰撞胶囊体调试显示。

  20. 单击 编译(Compile),然后单击工具栏编辑器按钮中的 播放(Play)。

最终结果

在编辑器中运行时,使用 WASD 四处移动,此时角色在默认情况下将会行走,在改变方向时会在不同行走动画之间混合。 在站立时,按住 左Shift 键并使用 WASD 将使角色从行走/瞄准动画混合到低姿/瞄准慢跑动画,从而使角色变为"快跑"。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消