Изображения как твердые объекты в Phaser

У меня есть тайловая карта, и я добавляю еще один слой, содержащий изображение блока тетриса, поверх слоя тайловой карты. Я хочу, чтобы игрок на исходной карте тайлов распознавал добавленное изображение как твердый объект. Я не уверен, как решить эту проблему? Есть ли пакет физики, который я могу использовать, или свойство объекта спрайта, которое я могу изменить, чтобы сделать изображение твердым объектом?

Я попробовал следующий код:

layer = map.createLayer('World1');
spriteLayer = game.add.group();
spriteLayer.z = 1;

// Add sprites to spriteLayer.
tetris = game.add.sprite(200, 120, 'tetris');
tetris.anchor.setTo(0.1, 0.5);
spriteLayer.add(tetris);             

function update() {
game.physics.arcade.collide(p, spriteLayer); 
game.physics.arcade.collide(p, layer);
...
}

но это, похоже, не работает. Слой спрайта — это слой, содержащий изображение блока тетриса, а p — мой игрок. Я не могу понять, как решить эту проблему, и буду признателен за любую помощь или любые другие идеи о том, как к ней подойти. Спасибо!


person user3261134    schedule 07.05.2014    source источник


Ответы (1)


Вы можете столкнуть Sprite с любым количеством вещей, но каждая проверка должна быть отдельным вызовом столкновения. Итак, в основном то, что вы делаете выше, нормально (при условии, что «p» — ваш игрок), но вам нужно убедиться, что ваш спрайт Tetris и спрайт Player включены для физического столкновения.

Если все в spriteLayer будет сталкиваться, вы можете легко сделать это с помощью:

spriteLayer = game.add.physicsGroup();

Тогда все добавленное к нему будет иметь тело Arcade Physics по умолчанию.

person PhotonStorm    schedule 08.05.2014