Проблема движения Slick2D

Итак, я конвертировал игру в Slick2D. Движение нарушено, и я в растерянности. Раньше мы использовали методы KeyPressed и keyReleased, но теперь с Slick2D движение работает неправильно.

Да, с переходом на Slick2D ничего не вышло. Сначала лаунчер, о котором у меня раньше была тема справки, а теперь это. Тем не менее, другой темой была проблема с ненавистным кодом WebStart.

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

Вот ссылка на код PasteBin, если поможет! http://pastebin.com/GRH86Yuw


person ajwgeek    schedule 17.12.2011    source источник


Ответы (1)


Я фанат Slick и буду рад помочь.

Фундаментальное отличие состоит в том, что Slick — это модель опроса, а не модель, управляемая событиями, когда речь идет о входных данных. По сути, в вашем методе обновления логики вы перебираете клавиши, привязанные к вашим событиям, и проверяете, нажата ли какая-либо из клавиш в данный момент, а затем запускаете эти события. По ряду причин, которые я могу указать, если хотите, опрос лучше работает в играх, особенно с большим количеством клавиш. Это просто другой способ ведения дел, не такой сложный. Самым большим преимуществом является то, что вы получаете централизованный ввод, обрабатывающий один метод, вместо того, чтобы распределять его по нескольким объектам экземпляра KeyListener.

Если вы хотите взглянуть на Pedestrians — простой симулятор пешехода, реализованный в Slick, — вы можете увидеть пример того, как для обработки ввода в Slick.

В частности, я обрабатываю ввод в этот файл (строки 192-295), внутри метода processInput. По сути, вы передаете ссылку на объект GameContainer (объект Slick, содержащий вашу игру), и из него вы можете получить экземпляр экземпляра Input, который позволит вам проверить, какие клавиши нажаты, какие кнопки мыши нажаты, и т.п.

person jefflunt    schedule 17.12.2011
comment
Спасибо! Итак, я просто проверяю, нажимается ли W, и если да, запускаю метод? - person ajwgeek; 17.12.2011
comment
Да, в значительной степени. В классах ввода Slick есть методы для проверки того, какие клавиши нажаты и/или нажата ли конкретная клавиша. - person jefflunt; 17.12.2011
comment
Обновлен мой ответ, чтобы указать на конкретный файл и метод в Pedestrians, который обрабатывает ввод с клавиатуры/мыши. Удачи со Сликом! Я думаю, это потрясающе. - person jefflunt; 18.12.2011