我正在尝试使用Java创建游戏的教程,但我无法理解游戏循环。
我不明白这个delta
变量的目的。
感谢任何帮助。
public void run() {
long lastTime = System.nanoTime();
final double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
while(running) {
long now = System.nanoTime();
delta += (now - lastTime) /ns;
if(delta >= 1) {
tick();
delta --;
}
}
}
答案 0 :(得分:0)
amountOfTicks
给出十亿分之一秒的刻度数(即一秒钟内的刻度)。if (delta >= 1)
检查delta是否大于一秒的滴答声。这是繁忙循环的一个很好的例子, 这通常表示一个无能的开发者。
代码的目的似乎是告知未来的维护开发人员,作者是一位无能的开发人员。
修改强> 如上所述。 #2是每个滴答的纳秒数。
答案 1 :(得分:-1)
这似乎是一种以预定的每秒帧速率执行游戏逻辑的方式,与CPU的实际速度无关。我希望tick()函数是执行游戏循环的循环。