虚幻引擎图文笔记:遇到了一个播放蒙太奇以后动画抖动的问题,并记录分析与解决过程

问题再现

如下图,我使用摇杆操作游戏,角色在爬过墙角的一瞬间四肢会大概率出现抖动

在这里插入图片描述

当前实现方法

  • 墙面爬行部分使用了一个BlendSpace2D(见下图),混合了8个方向的墙面爬行动画,并使用我定义的两个Axis值(SpeedHorizontal和SpeedVertical)来确定混合空间的位置。
  • 转角部分使用了一个转角的蒙太奇动画,并且该蒙太奇动画是一个RootMotion动画。
  • 为了防止在角色转角(即播放蒙太奇)的时候,玩家对摇杆误操作,使角色出现错误的移动,使用了Disable Input屏蔽了玩家输入,等蒙太奇播放完毕,再使用Enable Input恢复玩家输入。

在这里插入图片描述

问题分析

  1. 蒙太奇结束播放,回到状态机,此时由于玩家输入被屏蔽了,所以SpeedHorizontal和SpeedVertical都是0,于是此时动画被定位在BlendSpace2D正中间也就是Idle的位置。
  2. 在玩家输入通过Enable Input被恢复之前,即输入被屏蔽的时候,玩家的摇杆可能已经被拨动,并且在Enable Input时很大概率还没有恢复到原位,因此Enable Input后的一瞬间SpeedHorizontal和SpeedVertical的值大概率都不是0,于是就产生了动画没有任何过渡的瞬间抖动。

解决办法

在播放蒙太奇时既要防止用户的输入使角色产生位移,又不能屏蔽摇杆对动画状态机的输入,那么之前那样简单粗暴第使用Disable Input是不可取得了,解决办法也很简单:

定义一个CanMove的布尔变量,把所有AddMovementInput节点前面都加上,把之前Disable Input的地方都替换成CanMove = false,把Enable Input都替换成CanMove = true

修正后的效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发游戏的老王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值