
它们是完全分开的两样东西
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 怎么判断一个动画播放结束、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)