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