Скорость в физическом мире

Phaser поддерживает различные физические системы, каждая из которых действует как плагин, доступный для любой сцены в Phaser. На данный момент доступны три режима: Arcade Physics, Impact Physics и Matter.js Physics. Для этого курса в нашей игре мы будем использовать систему Arcade Physics , которая проста и легка и идеально подходит для мобильных браузеров. Когда создается физический спрайт, ему присваивается свойство body, которое является ссылкой на его физическое тело в системе аркадной физики. Объект body имеет много свойств и методов для игры. Например, если мы хотим смоделировать эффект гравитации, мы просто напишем:

player.body.setGravityY(300)

Аргументом является любое значение, но логично, что более высокое значение означает более быстрое падение (т.е. в функции мы задаем начальную скорость движения объекта, при нулевом ускорении). Если вы добавите этот код или запустите part5.html, вы увидите, что игрок падает и игнорирует созданный нами ландшафт: Причина этого в том, что мы не проверяем столкновение между землей и игроком.

Напомним, что наша земля и платформы - статичные тела. Если бы мы этого не сделали и вместо этого создали их динамическими, тогда, когда игрок столкнулся с ними, они ненадолго остановились бы, и тогда бы все рухнуло. Это происходит потому, что, если не указано иное, спрайт для земли является динамическим, и когда игрок ударяет по нему, результирующая сила столкновения прикладывается к земле, поэтому два тела обмениваются своими скоростями, и земля также начнет падать. Чтобы позволить игроку сталкиваться с платформами, мы можем создать объект Collider. Этот объект контролирует два физических объекта (или группы объектов) и проверяет их на столкновение или перекрытие. Если это произойдет, то он может при необходимости вызвать вашу собственную функцию обратного вызова, но при простом столкновении с платформами это нам не нужно (part6.html).

this.physics.add.collider(player, platforms);

Коллайдер - это тот, кто делает магию. Он берет два объекта и проверяет, сталкиваются ли они. В нашем случае мы даем ему игрока и группу платформ. Коллайдер достаточно умен, чтобы проверить столкновение со всеми членами группы, поэтому этот единственный его вызов проверит столкновение игрока с землей и всеми платформами. Результатом его работы является то, что платформы ведут себя действительно статично:

Назад       Далее