15

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

Предыдущие посты

1. Введение

2. Выбор редактора

3. Hello world

4. Загрузка ресурсов

5. Создание мира

6. Как работают платформы

7. Создание персонажа

8. Управление физическим телом в пространстве

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

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

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

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

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

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

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

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

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

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

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

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

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

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

0
Автор поста оценил этот комментарий

Материалы по уроку переместил в ветку platformer/lesson-9

0
Автор поста оценил этот комментарий
Здравствуйте автор! А можно рассмотреть создание транспорта? Хотелось бы создать игру наподобие hill climb racing
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Попробую, хотя с рейсерами не доводилось работать. Записал в блокнот :)
0
Автор поста оценил этот комментарий

if else if else.. режет глаз. Про switch/case слышал?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да и даже знаю 7 способо их нетревиального использования, но это будет в уроках по рефактору. Если сразу писать красиво, то начинающие разработчики не смогут узнать как можно улучшить готовый код, так сказать на котрасте нужно.

На проекте для боя я бы так писать не стал.

0
Автор поста оценил этот комментарий
Здравствуйте автор! А можно рассмотреть создание транспорта? Хотелось бы создать игру наподобие hill climb racing
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да но по позже, прорадитель этой игры это мотоциклист. Был еще на бородатых телефонах с java когда андроидов еще даже в помине небыло.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества