我正在制作一个 Java 游戏,但我一直坚持如何轻松地进行计时。我知道有 delta time 的东西,但这意味着我必须在几乎每个移动/更新函数中插入那个 delta 变量?
我想知道我是否可以对游戏的主 While 循环进行计时,使其每 50 毫秒运行/循环一次,而不是尽可能快。
位置的变化是时间的函数,因此必须将时间增量传递给大多数更新游戏状态的函数是有意义的。这是很自然的事情;我不会担心这样做。
虽然可以在每一帧中插入延迟(您几乎肯定想要这样做,因为让游戏以 1000 fps 运行毫无意义),但让您的更新逻辑假设每一帧都会花费预设的时间量。当一帧碰巧比其他帧花费更长的时间时,这样做会导致断断续续。
为了给你的游戏一定的帧率,每帧的一般做法如下:
startTime
。endTime
。(1 / framerate) - (endTime - startTime)