Animator:时间和间距(timing and spacing)笔记

Animator:时间和间距(timing and spacing)笔记,第1张

它们是完全分开的两样东西

Timing是一组动作的耗时,由几个关键的动作的间隔所组成;spacing则是这组动作里每个动作之间的组成情况,每个小动作之间的间隔。如d力球进入屏幕到d到地上的最后一个"嘣"组成了timing,而它在空中每一帧动作的间隔组成了spacing。

可以说是,timing和spacing的区别就是关键帧和补间帧的区别,spacing越大,d力球就运动得越快;spacing越小,d力球就运动得越慢。

相同timing和spacing的例子:一枚硬币在1s(timing)之内移动一厘米。如果此时它的运动属于线性插值,那么每一帧硬币之间的spacing就相等;如果用了非线性插值或者指数插值,那么每一帧直接的spacing就会不相等,该硬币表现出的速度也和线性插值的硬币不一样。

至于为什么会把Timing和spacing混淆,我觉得这是因为在它们表现在一维数轴上时,spacing代表的是帧与帧之间所间隔的"长度",所以有的人会认为spacing是帧与帧之间所间隔的"时间长度",但是要注意这个动作是发生在相同时间之内的,因此不能用时间来形容spacing,因为它本质上并没有增加这一组动作的总体时长,而是增加了帧与帧之间的间隔(就像把30帧动画的第15帧拉到第10帧来做一个有加速表现的动画一样,15-30帧之间的间隔虽然变长了,但总体依旧是个只有30帧的动画,时间没有改变,只是改变了间隔而已,所以时间≠间隔)。

另外,时间线上帧与帧之间的间距大,会让这个动作的速度变慢;间距小,则会让这个动作的速度变快,但这里的这个法则只应用于原本就是线性插值的动画帧。所以对比上面的spacing大速度快spacing小速度小,我们又可以明白spacing和帧与帧之间的间隔不是同一个东西。虽然在一维数轴上spacing可以表现为帧和帧之间的间隔长度,但复杂的动画并非一维数轴。

你需要获取当前animator所处在的动画状态,即使它处于idel状态也应当播放idel动画,你可以获取当前动画控制器处于哪个动画状态,正在播放哪些动画剪辑

Animator anim;

AnimationInfo[] AnimationInfoArr;

void GetCurrentAnimationName()

{

anim=GetComponentlt;Animator;();

AnimationInfoArr=animGetCurrentAnimationClipState(0);

foreach(AnimationInfo a in AnimationInfoArr)

{

DebugLog( aclipname);

}

}

以上就是关于Animator:时间和间距(timing and spacing)笔记全部的内容,包括:Animator:时间和间距(timing and spacing)笔记、unity Animator 怎么判断一个动画播放结束、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9657953.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存