Вы создаете свою первую игру в качестве разработчика, чтобы продемонстрировать свои навыки работы с Javascript с помощью Phaser 3? Ну, я был в таком же положении во время обучения в Microverse. Я должен был сделать платформер в качестве финального проекта в модуле Javascript. Я был немного обеспокоен, но в то же время взволнован в начале, потому что, давайте посмотрим правде в глаза! Будучи новичком, я бы не стал создавать игру, чтобы показать свои навыки и то, чему я уже научился. Мне было очень весело создавать свою игру, и я приложил все усилия, чтобы сделать ее такой, какой я хотел, и сделать ее похожей на профессионала за короткое время.
Во-первых, я хочу объяснить, что такое камера в Phaser. Камера — это вид игрового мира, границы которого установлены такими же, как размеры вашей игры, указанные в конфигурации. Для игрового мира становится важно, чтобы он был больше, чем то, что игрок видит при входе в игру, чтобы подарить радость исследования и открытия. После некоторых руководств и обсуждений, которые я нашел в Интернете, я все еще не мог понять, как установить границы при использовании камеры в моей игре. Цель состояла в том, чтобы заставить мой спрайт сталкиваться с левой, правой и верхней сторонами границ, но не с нижней стороной, потому что я хотел, чтобы он падал с платформ. Таким образом, игрок проигрывал игру, а на его экране появлялась сцена окончания игры.
Для этого в приведенном ниже коде я сначала изменил камеру по умолчанию (this.cameras.main), чтобы она знала, что мир больше, чем наше текущее окно. В моей платформенной игре я установил первые два аргумента со значением 0, которые представляют собой положение камеры по осям x и y относительно верхнего левого угла игрового холста. Следующие два аргумента — это ширина и высота камеры в пикселях. Сделайте то же самое для физики игрового мира. Кроме того, камера следует за вашим спрайтом, вызывая .startFollow(), ее первый аргумент — это спрайт, которому вы хотите следовать. Затем вы передаете значение roundPixels, которое является логическим значением и влияет на рендеринг. Это помогает уберечь игру от дрожания камеры, когда вы устанавливаете его в значение true. Последние два аргумента — это параметры lerpX и lerpY, это скорость (от 0 до 1, по умолчанию 1), с которой камера захватывает спрайт. Более низкая скорость лерпа приведет к тому, что ваш персонаж будет двигаться намного быстрее, чем камера.
Наконец, вы передаете логическое значение в качестве аргумента для каждой стороны границ камеры (слева, справа, вверху и внизу). Также сделайте то же самое для физики мира игры. Установите для любой стороны значение true, если вы хотите привязку, или false, если нет. Я установил для нижней стороны значение false, чтобы добавить условие проигрыша, когда мой спрайт падает с платформ. Затем вы устанавливаете для .setCollideWorldBounds() значение true, чтобы тело спрайта также сталкивалось с мировыми границами всех его сторон.
В конце концов, было необходимо и важно сделать границы мира истинными только в тех сторонах, которые я хотел, как я показал вам выше. Теперь ваш игровой платформер будет потрясающим!