このコードは何度か見ました。
long lastTime = System.nanoTime();
final double ticks = 60D;
double ns = 1000000000 / ticks;
double delta = 0;
上記のコードは、システム時間を取得して に保存しlastTime
ます。60 ティックは、1 秒あたりの更新回数に相当するはずです。
while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
if(delta >= 1){
tick();
delta--;
}
を取りnow
、減算lastTime
してから、ナノ秒/60 に変換します。now
とナノの間の時間差がlastTime
60 を超えると、デルタが 1 秒あたり 60 回以上になるという保証はありますか? tick();
1秒間に約60回実行される理由がわかりません。私の計算では、ループが実行されるたびにデルタが 0.0025 程度増加します。