В прошлом уроке мы добавили обработку столкновений с объектами которая работает хорошо. Однако на данный момент у нас нет возможности управлять нашим персонажем. Возможно вы подумали что сейчас нам нужно обратится к документации и поискать в ней как можно прослушивать события в Phaserjs, однако в этом нет необходимости т.к в Phaserjs есть удобный менеджер клавиатуры.
Подготовка к работе
для работы над проектом вам понадобится настроенный phaserjs и установленный nodejs. Все не обходимые файлы доступны по ссылке.
Добавляем управление с клавиатуры
Как я уже сказал ранее в Phaserjs есть встроенный менеджер клавиатуры который можно подключить, одной строчкой:
Чаще всего для управления персонажем используются клавиши верх, низ, влево, вправо ( в консолях не на пк, на пк это WASD сочетание ) обработку нажатия этих клавиш мы добавим в метод loop:
Хотя мы добавили много кода, все должно быть довольно читабельным.
Первое, что он делает, это проверяет, удерживается ли левая клавиша. Если это так, мы применяем отрицательную горизонтальную скорость и запускаем «левую» анимацию бега. Если они удерживают «право», мы буквально делаем наоборот. Очищая скорость и устанавливая ее таким образом, каждый кадр создает стиль движения «стоп-старт».
Спрайт игрока будет двигаться только тогда, когда нажата клавиша, и сразу же остановится. Phaser также позволяет вам создавать более сложные движения, с импульсом и ускорением, но это дает нам эффект, который нам нужен для этой игры. Последняя часть проверки нажатия устанавливает анимацию на «поворот» и обнуляет горизонтальную скорость, если ни одна клавиша не удерживается.
Реализация прыжка
В последнем блоке кода мы добавляем возможность прыжка. Курсор вверх - это наша кнопка прыжка, и мы проверяем, нажата ли она. Однако мы также проверяем, касается ли игрок пола, иначе он сможет прыгнуть, находясь в воздухе.
Если оба эти условия соблюдены, мы применяем вертикальную скорость 330 пикс / сек. Игрок автоматически упадет на землю из-за гравитации.
Попробуйте поменять значение 330 и посмотреть что при этом получится.