Time.deltaTime可以达到0吗?

时间:2015-11-14 16:05:12

标签: unity3d timedelta

以下是短代码示例

    if (timer < 0)
    {
        timer = cooldown;
    }
    else if (timer > 0)
    {
        timer -= Time.deltaTime;
    }
    else if (timer == 0)
    {
        print(0);
    }

可能是cooldown = 1

我的问题很简单: 是否有可能达到州timer == 0? 我的意思是理论上有可能用Time.deltaTime精确地击中0?我知道考虑到float的大小,这听起来很愚蠢,但如果这种情况可能发生,我仍然非常感兴趣。

1 个答案:

答案 0 :(得分:1)

达美时间不能为零。增量时间表示最后一帧和当前帧之间的时间差。所以理论上它不能为零。也许你的计时器变量可能是但它的机率非常低。我假设你的计时器变量是浮点数,所以当你检查它的0是否实际为0.000000(类似的东西)。但是你的计时器变量将会减少,如0.969987,0.9525292,......,0.003284598,然后它将跳转到负值,如-0.01333026。当它变为负值时,您将错过第三个if语句。

if (timer <= 0)
{
    timer = cooldown;
    print(0);
}
else if (timer > 0)
{
    timer -= Time.deltaTime;
}

我相信这是一个更好的解决方案。