Гравитация и неподвижные объекты
Гравитация - это ускорение вниз, применяемое к спрайтам игрового мира. Довольно легко поместить кучу объектов на уровень и добавить гравитацию, но если мы хотим чтобы они оставались видимы, а не просто падали вниз за экран, нужно что-то, что останавливало бы объекты при их столкновении. Из-за того что метод collide - это стандартной вызов физики, который передает силы при столкновении двух объектов, если мы поместим землю на уровень, земля начнет двигаться от силы удара. Если у вас есть такие объекты как земля, которые не должны двигаться после столкновений, они должны быть заданы как неподвижные.
Этот пример - быстрый способ того, как получить игрока, контроллируемого кнопками налево и направо и острова. Остров не подвержен гравитации, а так же столкновение с ним не передает его телу импульса.
var player, ground, cursors; function create() { //настройка игры game.physics.startSystem(Phaser.Physics.ARCADE); game.physics.arcade.gravity.y = 300; player = game.add.sprite(200, 100, “player”); player.anchor.setTo(.5,1); game.physics.enable(player, Phaser.Physics.ARCADE); ground = game.add.sprite( 100, 500, “ground”); game.physics.enable(ground, Phaser.Physics.ARCADE); ground.body.immovable = true; ground.body.allowGravity = false; //управление cursors = game.input.keyboard.createCursorKeys(); } function update() { //запуск кода игрового цикла if(cursors.left.isDown) { player.body.velocity.x = −200; player.scale.x = 1; } if(cursors.right.isDown) { player.body.velocity.x = 200; player.scale.x = −1; }
game.physics.arcade.collide(player, ground); }
Важная строка в этом куске кода - включение гравитации через game.physics.arcade.gravity.y, что даст всем телам физики arcade ускорение вниз, равное 300. Для земли гравитация явно отключена (ground.body.allowGravity = false), а также она неподвижна, так что когда игрок падает на платформу, она стоит на месте. Затем, когда физика включена, для движения предпочтительнее использовать скорость тела, вместо того, чтобы напрямую изменять координаты x. Это позволит спрайту хорошо работать с физической системой.
Наконец, не обязательно писать обработчик столкновений между игроком и землей. Вместо этого нам нужно просто чтобы эти столкновения происходили, чтобы они корректно разделялись при столкновении.
Комментариев нет:
Отправить комментарий