Я пытаюсь реализовать gameloop, использующий дельта-время. Я получил следующий код от this article, однако я чувствую, что он не очень хорошо объясняет этот тип игр. Я исследовал по запросуAnimationFrame, и ни одно из объяснений не кажется полезным. Может ли кто-то просто сломать, как работает этот цикл?Javascript - gameloop с использованием дельта-времени
function timestamp() {
return window.performance && window.performance.now ? window.performance.now() : new Date().getTime();
},
var now,
dt = 0,
last = timestamp(),
step = 1/60;
function frame() {
now = timestamp();
dt = dt + Math.min(1, (now - last)/1000);
while(dt > step) {
dt = dt - step;
update(step);
}
render(dt);
last = now;
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);
upvote ... также упоминание о том, что текущая версия 'requestAnimationFrame' автоматически передает временную метку функции анимации. Вы можете использовать эту временную метку, чтобы вычислить, сколько времени прошло с момента последнего появления в цикле анимации. Важно: это прошедшее время может быть использовано для перемещения вашего персонажа на основе прошедшего времени, а не по (возможно, нерегулярному) количеству циклов анимации – markE