интерполяция в приложении приводит к дрожанию спрайта - PullRequest
0 голосов
/ 17 мая 2018

Я хотел реализовать специальный игровой цикл, в котором игра фактически обновляет только 25 кадров в секунду, в то время как она воспроизводится с максимальной скоростью компьютера.Я следовал за статьей из цикла игры dewitters и правильно настроил интерполяцию, я полагаю (кстати, я использую sdl2) ...

const int TICKS_PER_SECOND = 25;
const int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
const int MAX_FRAMESKIP = 5;

Uint32 next_game_tick = SDL_GetTicks();
int loops;
float interpolation;

while (running)
{
    loops = 0;
    while (SDL_GetTicks() > next_game_tick && loops < MAX_FRAMESKIP)
    {
        Update();

        next_game_tick += SKIP_TICKS;
        loops++;
    }

    interpolation = float(SDL_GetTicks() + SKIP_TICKS - next_game_tick) / float(SKIP_TICKS);
    Render(interpolation);
}

Но я не совсем понимаю, как реализовать интерполяцию внутрисделать звонок.я попытался просто установить координаты x и y моего спрайта относительно интерполяции ...

interPos.x = pos.x + int (speed * interpolation);
interPos.y = pos.y + int (speed * interpolation);
link.Draw(ren, interPos, 0, false);

, но это только вызвало дрожание спрайта главного персонажа.Любая помощь приветствуется!

...