Разработка игры на phaserjs - 6: как работают платформы?

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

Всем привет!

В ходе предыдущего урока мы добавили платформы на нашей игровой сцене:

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

Для этого мы добавили много кода в нашу функцию create:

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

давайте разберемся за что отвечает этот код:

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

Эта инструкция создает новую группу которая отвечает за управление статическими объектами и сохраняет ее в переменную platforms. В Аркадной физике существует два типа физических тел ( объектов ):

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


- статическое - это тело просто имеет позицию и размер, на него не воздействует гравитация, для него нельзя указать скорость и иные характеристики.

Статичные тела, являются статичными по природе. И идеально подходит для площадки и платформ, на которых мы собираемся позволить игроку бегать.

Что такое группы? И зачем они нам нужны?

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

Группы способны создавать свои собственные игровые объекты с помощью таких полезных вспомогательных функций, как create. Физическая группа автоматически создаст детей с физическими возможностями.

После того как мы создали группу, ее можно использовать для создания платформ:

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

Как мы видели ранее, этот код создает следующую сцену:

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

Во время предварительной загрузки мы импортировали platform.png изображение. Это простой зеленый прямоугольник размером 400 x 32 пикселей, который будет использоваться для наших основных нужд.

В первой строке кода выше. мы добавляем нашу основную платформу ( "землю" ) размером 400 x 568 (помните, изображения располагаются в зависимости от их центра) - поскольку длинны исходного изображения недостаточно для того что бы разместить ее по всей ширине игровой сцены ( это нужно для того что бы игровой персонаж не выпал с экрана :) ), мы её масштабируем х2 с помощью функции setScale(2). Теперь он размером 800 x 64, что идеально подходит для наших нужд.

Вызов метода refreshBody() необходим для оповещения игрового мира о внесенных изменениях, это необходимо поскольку мы масштабировали статическое физическое тело.

После того как мы разместили на игровой сцене "основную" платформу, мы добавляем вспомогательные платформы на которые сможет запрыгивать наш игровой персонаж:

Разработка игры на phaserjs - 6: как работают платформы? Gamedev, Typescript, Javascript, HTML, Холст, Phaser, Длиннопост

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

Заключение

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

Лига Разработчиков Видеоигр

6.8K поста22.2K подписчиков

Добавить пост

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ЗАПРЕЩЕНО:

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

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

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


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

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

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

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

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