2

我正在制作一个 Java 游戏,但我一直坚持如何轻松地进行计时。我知道有 delta time 的东西,但这意味着我必须在几乎每个移动/更新函数中插入那个 delta 变量?

我想知道我是否可以对游戏的主 While 循环进行计时,使其每 50 毫秒运行/循环一次,而不是尽可能快。

4

1 回答 1

1

位置的变化是时间的函数,因此必须将时间增量传递给大多数更新游戏状态的函数是有意义的。这是很自然的事情;我不会担心这样做。

虽然可以在每一帧中插入延迟(您几乎肯定想要这样做,因为让游戏以 1000 fps 运行毫无意义),但让您的更新逻辑假设每一帧都会花费预设的时间量。当一帧碰巧比其他帧花费更长的时间时,这样做会导致断断续续。

为了给你的游戏一定的帧率,每帧的一般做法如下:

  • 将当前时间记录为startTime
  • 进行状态更新。
  • 重绘。
  • 将当前时间记录为endTime
  • 睡觉(1 / framerate) - (endTime - startTime)
于 2013-01-07T02:49:30.537 回答