Запрос анимации кадра с точностью до миллисекунды

Я работаю над игровым циклом и не могу обойти конкретную проблему: группа объектов начинается с увеличенной задержкой и должна перемещаться на определенное расстояние.

Ожидаемое поведение состоит в том, что все объекты должны двигаться по четной диагональной линии, но они движутся в неравных группах.

Я понимаю, что проблема заключается в интервале обновления 16.667 мс, который "группирует" объекты в циклах обновления. Можно ли достичь точности менее 17 мс?

Я попытался разделить методы update и render и запустить обновление в цикле delta while - все безрезультатно.

Вот соответствующая часть из функции галочки:

function tick() {
  if (this._stopped) return;
  let now = performance.now();

  if (now < this._lastTick + this._interval - 1) {
    this._rafId = requestAnimationFrame(this.tick);
    return;
  }

  this._rafId = requestAnimationFrame(this.tick);
  let frameTime = (now - this._lastTick);
  this._lastTick = now;
  this._delta += frameTime;
  let acc = 0;

  while (this._delta >= this._interval) {
    this._delta -= this._interval;
    //this.update(this._interval);
    acc++;
  }

  this.update(acc * this._interval);
  //this.render(time);   
  this.count++;
}

Вот кодекс

Был бы очень признателен за любой вклад.

0 ответов

Другие вопросы по тегам