Java while循环计时

时间:2013-01-07 02:44:47

标签: java lwjgl

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

我想知道我是否可以计算游戏的主要While循环,以便每隔50毫秒运行/循环,而不是尽可能快地运行。

1 个答案:

答案 0 :(得分:1)

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

虽然每帧都可以插入延迟(而且你几乎肯定想要这样做,因为让游戏以1000 fps运行没有意义),让你的更新逻辑假设<通常是不利的/ em>每个帧将占用预设的时间量。如果一帧发生的时间比其他帧长,那么这样做会导致波动。

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

  • 将当前时间记录为startTime
  • 状态更新。
  • 重绘。
  • 将当前时间记录为endTime
  • 睡眠(1 / framerate) - (endTime - startTime)