Unity AnimationrStateInfo.normalizedTime===1.0f,是第一个循环的结束还是第



在Unity中,Animator组件有一个名为GetCurrentAnimatorStateInfo的函数。它返回一个具有normalizedTime字段的AnimatorStateInfo对象。

该字段是一个浮点值,其中整数部分表示动画师当前正在播放片段的循环数。浮动部分表示该剪辑中的标准化时间(我认为0.0f是开始,1.0f是结束(。例如,0.0和1.0之间的任何值都表示播放第一个循环,1.0和2.0之间表示播放第二个循环,依此类推

我现在的问题是,当normalizedTime正是1.0时,情况是什么?然后整数部分是1(表示剪辑已经循环了一次,我们现在处于第二次迭代中(,浮动部分是0,这意味着它是剪辑的第一帧。但同时,normalizedTime值为1.0应该意味着我们处于片段循环之前的最后一帧。

对于完美循环的剪辑,这可能没有问题。但是如果剪辑不是一个循环呢?我如何检测到我现在处于最后一帧?理论上,normalizedTime应该是0.99999999999999999999f

这是正确的吗?如何解读normalizedTime == 1.0f

我自己发现了。如果";循环时间";的,则任何normalizedTime>=1.0属于第二个(或第三个…(循环。非常接近1.0的偶数(如0.9999999(属于第二帧。这意味着,当你真正期待最后一帧时,你可能会得到剪辑的第一帧。

normalizedTime似乎没有任何值可以保证最后一帧。

最新更新