Pacman Array - Плавное движение - PullRequest
0 голосов
/ 27 ноября 2011

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

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

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

1 голос
/ 27 ноября 2011

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