Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make objects inside a group collide with themselves in Phaser.io?

This question is regarding phaser.io. Can someone show me how to make objects inside a group collide with each other. Right now when i do,

//board is the group and it has many elements
//Floor is where all the elements fall to
game.physics.arcade.collide(this.board, this.floor);

All the elements inside the group stack on top of each other when they hit the floor at the same position. In other words the stack builds at one position, the latest one hiding the previous element and not upwards in the sense one on top of another at a higher position. How can i make the stack build upwards? If you could just show me how to make elements inside a group collide would be great. Thanks.

like image 369
Lakmal Caldera Avatar asked Dec 25 '22 23:12

Lakmal Caldera


2 Answers

You can collide a Group with itself:

game.physics.arcade.collide(this.board, this.board);

Although on that note I would point you at this tutorial on adding a simple 1d sort array, which will help considerably if the Group is densely populated: http://ra3s.com/wordpress/dysfunctional-programming/pruning-collision-detection-with-a-1d-sort/

like image 168
PhotonStorm Avatar answered May 10 '23 18:05

PhotonStorm


Just to update accepted answer..

In phaserjs version 3.55.2 following code should be used:

game.physics.world.addCollider(this.board, this.board);
like image 20
kodlan Avatar answered May 10 '23 18:05

kodlan