Платформы

Мы добавили код в функцию create, который заслуживает более подробного объяснения. Давайте начнем с этой строчки:

platforms = this.physics.add.staticGroup();

Таким образом, мы создаем новую группу статических тел и назначаем ее переменной platforms. В аркадной физике есть два типа твердых тел: динамические и статические. Динамические тела движутся, соответственно могут иметь скорость и ускорение. Они могут сталкиваться с другими объектами, а это столкновение зависит от массы тела и других параметров. Статические же тела имеют только положение и размер. Они не реагируют на гравитацию, им нельзя установить скорость, и когда что-то ударяет их, они не двигаются. Они полностью соответствуют своему названию (статические). Они идеально подходит для площадки и платформ, по которым будет бегать наш персонаж.

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

Группа platforms теперь может использоваться для создания отдельных платформ:

platforms.create(400, 568, 'ground').setScale(2).refreshBody();

platforms.create(600, 400, 'ground');.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');.create(750, 220, 'ground');

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

Во время предварительной загрузки мы импортировали изображение «ground». Это простой зеленый прямоугольник размером 400 x 32 пикселей, который послужит основой для платформ:

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

Земля увеличена и расположена на своем месте, так что пришло время для остальных платформ:

platforms.create(600, 400, 'ground');
platforms.create(50, 250, 'ground');
platforms.create(750, 220, 'ground');

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

3 платформы расположены вдоль экрана, на правильном расстоянии друг от друга, чтобы позволить игроку прыгать по ним.

Итак, давайте добавим нашего игрока.

Назад       Далее