Time.deltaTime可以达到0



这是短代码的示例

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

并且可以是cooldown = 1

我的问题很简单:是否可能达到状态CCD_ 2?我的意思是,理论上有可能用Time.deltaTime精确地命中0吗?考虑到float的大小,我知道这听起来很愚蠢,但我仍然对这种情况是否会发生很感兴趣。

增量时间不能为零。增量时间是指上一帧和当前帧之间的时间差。所以理论上它不可能是零。也许你的计时器变量可以是,但它的可能性很低。我假设你的计时器变量是float,所以当你检查它是否为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;
}

我相信这对你的案子来说是一个更好的解决方案。

最新更新