Моя функция lerp заканчивается преждевременно - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь включить функцию 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 проходит слишком быстро, таким образом, он в основном удаляет все элементы в буфере, не оставляя ничего для переноса.Что я здесь не так делаю?

...