使用UE4动画混合空间实现侧向和后退移动

10 篇文章 18 订阅

目标

在之前的博客《学习UE4官方第三人称模板中的内容》里,角色已经可以移动和跳跃了。不过,角色的朝向是总是面对移动方向的,而我想尝试让角色朝向面对相机的方向,即角色应该可以“侧向”和“后退”移动。

解决的基本思路是使用混合空间,使用朝向这个变量来混合四个方向的移动动画。下面是实践:

0. 准备资源

首先,我从这个资源包里找到了想要的资源:
在这里插入图片描述
(值得一提的是,这个资源包中实现了一个很高级的角色控制逻辑,非常值得学习!)
我导出了其中如下资源到fbx:

  • ALS_N_Run_B 后退移动
  • ALS_N_Run_F 向前移动
  • ALS_N_Run_LF 向左移动
  • ALS_N_Run_RF 向右移动

然后导入我的工程(上接《使用UE4动画蒙太奇实现分层动画》):
在这里插入图片描述

1. 制作混合空间

在之前的博客《学习UE4官方第三人称模板中的内容》里,也使用了混合空间。不过那是1维的,速度是唯一的维度。考虑到现在多了一个维度:移动朝向。那么混合空间自然就变成了2维的了。(不过仅将移动朝向视为一个维度也是可行的,但需要有额外的逻辑表示速度为0时变为“站立”,而且这样子是没法区别行走和跑步的)

1.1 创建

在这里插入图片描述
取名为BlendDirection_Run
在这里插入图片描述

1.2 设置

设定横向维度为Direction表示移动的方向,范围从-180度180度
在这里插入图片描述
将动画序列放到对应的位置:
在这里插入图片描述
可预览如下:
在这里插入图片描述

2. 动画蓝图的 AnimGraph

2.1 创建“朝向的模式”枚举类

我想让角色可以朝向相机,但是又不想将之前的逻辑都移除,因此我想能够在运行时随时切换两种“朝向的模式”:

  1. 朝向移动方向
  2. 朝向相机方向

为此,我建立一个枚举类:
在这里插入图片描述
并给予了两个枚举值:FaceMoveDirectionFaceCameraDirection
在这里插入图片描述

2.2 编辑AnimGraph

添加两个变量,分别表示朝向模式与移动方向:
在这里插入图片描述
修改MyStateMachine/OnTheGround中的逻辑如下:
在这里插入图片描述
基本上,就是使用FaceMode来决定播放哪个混合空间BlendDirection_Run也需要传递给它MoveDirection的值。

3. 角色蓝图中切换朝向模式

先绑定一个操作映射:
在这里插入图片描述
在角色蓝图中增加变量:
在这里插入图片描述
在角色蓝图中实现如下逻辑:
在这里插入图片描述
基本上,就是在按下ToggleFaceMode按键时,切换MyFaceMode的值。另外,还需要重新设定CharacterMovement组件中的Orient Rotation to MovementUse Controller Desired Rotation的值。

4. 动画蓝图的 事件图表

在事件图表中加入设置移动方向和朝向模式的逻辑:
在这里插入图片描述
其中,计算移动方向时的逻辑是:
使用GetActorRotation得到旋转,使用GetVelocity得到速度,将二者作为参数使用Calculate Direction来得到想要的移动方向的值。
在这里插入图片描述

效果

在这里插入图片描述

  • 13
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值