Pacman Array - Плавное движение

См. Наличие некоторых проблем с созданием Pacman, чтобы полностью понять этот вопрос. Просто посмотрите на первую часть принятого ответа. И это в Яве!

Я использую массив, как показано в ссылке выше. У меня есть персонаж pacman, который перемещается отлично, за исключением того факта, что он перемещается на 21 пиксель каждые 100 мс, поэтому он не совсем гладкий

В настоящее время я просто умножаю x и y текущей позиции массива на 21. Мне интересно, как бы я сделал это плавно. Я попробовал несколько способов передвижения, но они не сработали, и я не очень квалифицирован, и мои способы неэффективны, поэтому я приехал сюда в поисках хорошего способа плавного перемещения.

Некоторые вещи, которые вам, возможно, понадобится знать: Pacman сначала проверяет точку в направлении нажатия клавиши (пример: стрелка вправо вниз. Понятно ли это?) Если снимите флажок, он продолжит вызывать другой класс, который обрабатывает движущегося pacman, пока не появится стена или враг.

2 ответа

Решение

Вам нужно создать две петли. Игровой цикл, который прорабатывает логику игры и выполняется каждые 100 мс, и цикл анимации, который выполняется чаще, возможно, каждые 20 мс и вычисляет, где должны быть все спрайты.

// in pseudo code
sleep 20 ms
if i++ % 5 == 0
    do game loop
do animation loop with i
// passing i to animation loop will allow you to easily calculate how far sprite is along path to destination

Человеческий глаз может видеть примерно один кадр каждые 100 мс, а некоторые люди могут видеть быстрее, чем это. Вы можете увеличить частоту кадров по крайней мере до 20 кадров в секунду (что эквивалентно одному кадру каждые 50 мс). Если вы хотите, чтобы Pac-Man двигался с той же скоростью, вы можете уменьшить расстояние вдвое и удвоить скорость (заставить его двигаться на 10 или 11 пикселей каждые 50 мс).

См . Статью Wikipedia о частоте кадров для получения дополнительной базовой информации и того, что другие успешно используют.

Другие вопросы по тегам