Time.deltaTime能达到0吗?
Can Time.deltaTime reach 0?
这是短代码示例
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 是否实际上是 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;
}
我相信这是一个更好的解决方案。
这是短代码示例
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 是否实际上是 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;
}
我相信这是一个更好的解决方案。