Спрайт с группой
Столкновение спрайта с группой спрайтов не сильно отличается от столкновения двух спрайтов, единственное отличие в том, что процесс включает в себя создание группы и подключение всех тел этой группы, чтобы они стали частью физической системы. Вот пример кода, который создает минное поле и посылает бедный космический корабль практически на верную смерть.
var ship; var group; function create() { game.physics.startSystem(Phaser.Physics.ARCADE); ship = game.add.sprite(10, 10, ‘ship’); game.physics.enable(ship, Phaser.Physics.ARCADE); group = game.add.group(); group.enableBody = true; group.physicsBodyType = Phaser.Physics.ARCADE; for (var i = 0; i < 50; i++) { var mine = group.create( game.rnd.integerInRange(20, 780), game.rnd.integerInRange(20, 580), 'mine'); } ship.body.velocity.x = 20; ship.body.velocity.y = 20; } function update() { game.physics.arcade.collide(ship, group, collisionHandler, null, this); } function collisionHandler (player, mine) { player.kill(); }
Главное изменение здесь - это создание группы и подключение всех физических тел через group.enableBody и group.physicsBodyType. Так мы создадим тела для всех спрайтов группы без необходимости прохождения через каждый спрайт и вызовем game.physics.enable для создания тела. В противном случае функция обновления должна выглядеть очень похоже, однако теперь второй аргумент функции collide будет группой вместо одиночного спрайта. Эта функция проверит столкновения между игроком и любой из мин, запуская обработчик столкновений для каждого найденного столкновения (хотя в данном случае после первого столкновения игрок будет мертв, так что следующие столкновения происходить не будут).
Комментариев нет:
Отправить комментарий