Kollisionserkennung
Dies ist der 10. Schritt von 16 des Gamedev Phaser-Tutorials. Nun geht es zur nächsten Herausforderung—der Kollisionserkennung zwischen dem Ball und den Ziegeln. Glücklicherweise können wir die Physik-Engine nutzen, um Kollisionen nicht nur zwischen einzelnen Objekten (wie dem Ball und dem Schläger), sondern auch zwischen einem Objekt und der Gruppe zu überprüfen.
Kollisionserkennung zwischen Ziegel/Ball
Die Physik-Engine macht alles viel einfacher—wir müssen nur zwei einfache Codezeilen hinzufügen. Zuerst fügen Sie eine neue Zeile in Ihrer update()
-Methode hinzu, die eine Kollision zwischen dem Ball und den Ziegeln erkennt, wie unten gezeigt:
class ExampleScene extends Phaser.Scene {
// ...
update() {
this.physics.collide(this.ball, this.paddle);
this.physics.collide(this.ball, this.bricks, (ball, brick) =>
this.hitBrick(ball, brick),
);
this.paddle.x = this.input.x || this.scale.width * 0.5;
// ...
}
// ...
}
Die Position des Balls wird gegen die Positionen aller Ziegel in der Gruppe berechnet. Der dritte, optionale Parameter ist die Funktion, die bei einer Kollision ausgeführt wird. Diese Funktion wird von Phaser mit zwei Argumenten aufgerufen—das erste ist der Ball, den wir explizit an die collide
-Methode übergeben haben, und das zweite ist der einzelne Ziegel aus der Ziegelgruppe, mit dem der Ball kollidiert. Hier implementieren wir das Verhalten in einer Methode namens hitBrick()
. Erstellen Sie diese neue Methode am Ende der ExampleScene
-Klasse, kurz vor der schließenden Klammer }
, wie folgt:
class ExampleScene extends Phaser.Scene {
// ...
hitBrick(ball, brick) {
brick.destroy();
}
}
Und das war's! Laden Sie Ihren Code neu, und Sie sollten sehen, dass die neue Kollisionserkennung wie gewünscht funktioniert.
Sie würden erwarten, viel mehr eigene Berechnungen schreiben zu müssen, um Kollisionserkennung zu implementieren, wenn Sie pures JavaScript verwenden. Das ist das Schöne am Framework—Sie können viel langweiligen Code Phaser überlassen und sich auf die spaßigeren und interessanteren Teile der Spieleentwicklung konzentrieren.
Vergleichen Sie Ihren Code
Hier sehen Sie, was Sie bisher haben sollten, live ausgeführt. Um den Quellcode anzuzeigen, klicken Sie auf die Schaltfläche "Play".
Nächste Schritte
Wir können die Ziegel treffen und entfernen, was bereits eine schöne Ergänzung zum Gameplay ist. Es wäre noch besser, die zerstörten Ziegel zu zählen und die Punktzahl infolgedessen zu erhöhen.