Witam, ostatnio postanowiłem ulepszyć moją implementację Snake'a o delta time. Mój problem polega na tym, że gracz porusza się po gridzie. Wcześniej movement polegał na przesuwania gracza o rozmiar "komórki" co klatke, więc wartości x i y były całkowite, teraz gdy mnożę prędkość gracza przez timestep wszystko się posypało i już nie jest dopasowane do grid'a. Byłbym wdzięczny, gdyby ktoś mógł mnie naprowadzić na rozwiązanie tego problemu.
const int BOARD_CELL = 20;
const float snakeSpeed = 0.5;
float timeStep;
float lastFrameTime;
void Run()
{
while (!gameOver)
{
float time = (float)al_get_time() * 1000.0;
timeStep = time - lastFrameTime;
lastFrameTime = time;
Input(timeStep);
//reszta głównej pętli gry
}
}
void Input(float timeStep)
{
switch (game->keys)
{
case UP:
position.y -= (snakeSpeed * timeStep);
break;
case DOWN:
position.y += (snakeSpeed * timeStep);
break;
case LEFT:
position.x -= (snakeSpeed * timeStep);
break;
case RIGHT:
position.x += (snakeSpeed * timeStep);
break;
}
}
}
Wcześniej było np. position.x += BOARD_CELL;