Nachdem ich mich nun einige Tage mit dem Problem rumgequält habe
habe ich den Grund gefunden, wieso shape.sensor=true (die alternative zu static, aber mit Erkennen von onBeginContact etc.) nicht funktioniert hat. Anscheinend wird ein geladenes Polygon als mehrere Shapes gespeichert, die alle sensor=true haben wollen. In diesem Sinne habe ich einfach eine for-Schleife genommen und Heureka:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
gemuese = this.add.sprite(42,42,"gurke");
this.game.physics.p2.enable(gemuese, true);
gemuese.body.clearShapes();
gemuese.body.loadPolygon("collision_masks", "gurke");
for(var i=0; i<gemuese.body.data.shapes.length;i++)gemuese.body.data.shapes[i].sensor=true;
gemuese.body.onBeginContact.add(fischfutter, this);
fischfutter = function(body, bodyB, shapeA, shapeB, equation) {
console.log("Heureka!");
}
|
Vielleicht könnt ihr den Code zur #gppcc8 bei meinem Spiel AllYouCanEat ja schon bald in Action sehen