Найти тему
jsbook.ru

Разработка игры на phaserjs - 9: управление персонажем с клавиатуры

Оглавление

В прошлом уроке мы добавили обработку столкновений с объектами которая работает хорошо. Однако на данный момент у нас нет возможности управлять нашим персонажем. Возможно вы подумали что сейчас нам нужно обратится к документации и поискать в ней как можно прослушивать события в Phaserjs, однако в этом нет необходимости т.к в Phaserjs есть удобный менеджер клавиатуры.

Подготовка к работе

для работы над проектом вам понадобится настроенный phaserjs и установленный nodejs. Все не обходимые файлы доступны по ссылке.

Добавляем управление с клавиатуры

Как я уже сказал ранее в Phaserjs есть встроенный менеджер клавиатуры который можно подключить, одной строчкой:

-2

Чаще всего для управления персонажем используются клавиши верх, низ, влево, вправо ( в консолях не на пк, на пк это WASD сочетание ) обработку нажатия этих клавиш мы добавим в метод loop:

-3

Хотя мы добавили много кода, все должно быть довольно читабельным.

Первое, что он делает, это проверяет, удерживается ли левая клавиша. Если это так, мы применяем отрицательную горизонтальную скорость и запускаем «левую» анимацию бега. Если они удерживают «право», мы буквально делаем наоборот. Очищая скорость и устанавливая ее таким образом, каждый кадр создает стиль движения «стоп-старт».

Спрайт игрока будет двигаться только тогда, когда нажата клавиша, и сразу же остановится. Phaser также позволяет вам создавать более сложные движения, с импульсом и ускорением, но это дает нам эффект, который нам нужен для этой игры. Последняя часть проверки нажатия устанавливает анимацию на «поворот» и обнуляет горизонтальную скорость, если ни одна клавиша не удерживается.

Реализация прыжка

В последнем блоке кода мы добавляем возможность прыжка. Курсор вверх - это наша кнопка прыжка, и мы проверяем, нажата ли она. Однако мы также проверяем, касается ли игрок пола, иначе он сможет прыгнуть, находясь в воздухе.

Если оба эти условия соблюдены, мы применяем вертикальную скорость 330 пикс / сек. Игрок автоматически упадет на землю из-за гравитации.

Попробуйте поменять значение 330 и посмотреть что при этом получится.

-4