Java while循环计时
我正在制作一个Java游戏,我被困在如何轻松计时上。我知道存在增量时间,但这意味着我必须在几乎每个移动/更新函数中插入增量变量Java while循环计时,java,lwjgl,Java,Lwjgl,我正在制作一个Java游戏,我被困在如何轻松计时上。我知道存在增量时间,但这意味着我必须在几乎每个移动/更新函数中插入增量变量 我想知道我是否可以对游戏的主While循环计时,使其每50毫秒运行/循环一次,而不是尽可能快。位置的变化是时间的函数,因此必须将时间增量传递到大多数更新游戏状态的函数中。这是很自然的事情;我不会担心这样做 虽然可以在每一帧中插入延迟(您几乎肯定希望这样做,因为以1000 fps的速度运行游戏毫无意义),但让您的更新逻辑假设每一帧将占用预设的时间通常是有害的。当一帧恰好比
我想知道我是否可以对游戏的主While循环计时,使其每50毫秒运行/循环一次,而不是尽可能快。位置的变化是时间的函数,因此必须将时间增量传递到大多数更新游戏状态的函数中。这是很自然的事情;我不会担心这样做 虽然可以在每一帧中插入延迟(您几乎肯定希望这样做,因为以1000 fps的速度运行游戏毫无意义),但让您的更新逻辑假设每一帧将占用预设的时间通常是有害的。当一帧恰好比其他帧需要更长的时间时,这样做会导致起伏 为使游戏具有一定的帧速率,每个帧的一般方法如下:
- 将当前时间记录为
startTime
- 执行状态更新
- 重画
- 将当前时间记录为
endTime
- 睡眠时间
(1/帧率)-(结束时间-开始时间)
1/60帧/秒=~.017秒/帧=17毫秒/帧
。总是协调你的单位。哦,我明白了,让我试试这个!