Я пытаюсь включить функцию lerp в онлайн-игре.Я делаю это, имея список буферов, я добавляю каждое обновление сервера в список и перетаскиваю содержимое, вот пример:
movementBuffer.unshift(gameUpdate); //when a new update is received
//in the main loop
timeElapsed += delta;
lerpPerc = timeElapsed / updateRate; //percent which is lerped to
if(lerp > 1){ //when the lerp is finished, the states that were just lerped are removed from the buffer
movementBuffer.splice(prevData.length - 2, 2); //remove the previous states from the buffer
state1 = prevData[prevData.length - 1];
state2 = prevData[prevData.length - 2];
timeElapsed = 0;
lerp = 0;
}
for (i = 0; i < state2["players"].length; i++) {
// update the players
prevY = state1["playery" + state["players"][i]];
prevX = state1["playerx" + state["players"][i]];
x = state2["playerx" + state["players"][i]];
y = state2["playery" + state["players"][i]];
//lerp to the new x and y
playerCoords[recivedData["players"][i]][0] = lerpF(prevX, x, lerpPerc);
playerCoords[recivedData["players"][i]][1] = lerpF(prevY, y, lerpPerc);
}
Проблема в том, что lerpPerc
проходит слишком быстро, таким образом, он в основном удаляет все элементы в буфере, не оставляя ничего для переноса.Что я здесь не так делаю?