以下是短代码示例
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
的大小,这听起来很愚蠢,但如果这种情况可能发生,我仍然非常感兴趣。
答案 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;
}
我相信这是一个更好的解决方案。