欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 【Unity】如何做一个很平滑的行人动画,且可以根据行人速度动态调整动画速度?

【Unity】如何做一个很平滑的行人动画,且可以根据行人速度动态调整动画速度?

2024/10/25 5:26:28 来源:https://blog.csdn.net/karry_zzj/article/details/139621627  浏览:    关键词:【Unity】如何做一个很平滑的行人动画,且可以根据行人速度动态调整动画速度?

首先我们定一下不同速度对应的行人动作状态,设计为四种状态:

  • 静止站立Stand:0~maxStandSpeed
  • 走路Walk:minWalkSpeed~maxWalkSpeed
  • 慢跑Jog:minJogSpeed~maxJogSpeed
  • 快跑Run:大于MinRunSpeed

我们可以使用Animator组件实现行人的不同动画,可以设计为如下行人动画状态机:
在这里插入图片描述
并通过速度做动画的切换,其中Animator有一个方便之处是不同动画之间切换的过渡是可以通过Transitions来实现,这样动画之间切换就不会突兀。

此外,在Walk, Jog, Run这三个动画中,还可以根据行人速度调整动画自身的速度Speed。在Unity editor中动画速度在如下图中调整(默认为1),也可以代码动态调整。
在这里插入图片描述
然后我们将行人的速度映射为动画的速度,可以采用归一化映射方法:

映射公式如下:
y = y m i n + y m a x − y m i n x m a x − x m i n ∗ ( x − x m i n ) y = y_{min} + \frac{y_{max} - y_{min}}{x_{max} - x_{min}} * (x - x_{min}) y=ymin+xmaxxminymaxymin(xxmin)
其中, y m a x y_{max} ymax为要映射的目标区间最大值, y m i n y_{min} ymin为要映射的目标区间最小值, x m a x x_{max} xmax为数据的最大值, x m i n x_{min} xmin为数据的最小值, x x x为当前数据值, y y y为归一化映射后的值。
将映射后的值调整到动画上的速度就可以根据行人速度动态调整动画的速度

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com