Я пытаюсь создать игру с независимой частотой кадров, в которой myObject
перемещается вправо на единицу в миллисекунду. Тем не менее, я не знаю, как вычислить deltaTime
в этом коде:Как правильно рассчитать временную дельта?
var currentTime = 0;
var lastTime = 0;
var deltaTime = 0;
while(play) {
// Retrieve the current time
currentTime = Time.now();
deltaTime = currentTime - lastTime;
lastTime = currentTime;
// Move myObject at the rate of one unit per millisecond
myObject.x += 1 * deltaTime;
}
Скажем, первый кадр взял 30 мс, так deltaTime
должно быть 30, но это было 0 , потому что мы знаем только время на старте кадра не в конце кадра. Затем во втором кадре потребовалось 40 мс, поэтому deltaTime
равно 30, и, следовательно, myObject.x
равно 30. Однако прошедшее время составляет 70 мс (30 мс в 1-м кадре + 40 мс во втором кадре), поэтому myObject.x
должно быть 70, а не 30
Я не моделирую физику, я просто пытаюсь переместить myObject
относительно прошедшего времени (а не кадра).
Как правильно рассчитать deltaTime
?
Я знаю, что некоторые пользователи игрового движка используют кусок времени или галочку, поэтому они ожидают раньше времени. Кроме того, я уже читал article on fixing your timestep и многие другие, но я все еще смущен.
На каких языках вы программируете? – APerson
Это похоже на JavaScript, но это вопрос, не зависящий от языка –
@APerson Я пытаюсь изучить концепцию сэр. Я не беспокоюсь о любом языке так долго, пока не собрал его – user3578021