Jetzt erweitern wir unser Spiel um das Paddle, mit dem du den Ball später kontrollierst. Das Paddle laden wir aus dem Bild-Asset paddle.png
.
paddle.png
Speichere die Datei paddle.png
im Ordner assets
(gleicher Ordner wie ball.png
).
game.js
Wir erweitern den Code um das Paddle, das mit den Pfeiltasten oder mit der Maus entlang der X-Achse bewegt wird. Der Ball prallt noch nicht am Paddle ab und bleibt immer im Spielfeld.
window.onload = function() {
const config = {
...
};
let ball;
// Variablen für paddle und Cursor-Tasten
let paddle;
let cursors;
const game = new Phaser.Game(config);
function preload() {
...
this.load.image('paddle', 'assets/paddle.png');
}
function create() {
...
// Paddle an unteren Rand setzen, mittig horizontal
paddle = this.physics.add.image(width / 2, height - 50, 'paddle');
paddle.setImmovable(true); // Paddle soll sich nicht durch Kollision bewegen
paddle.setCollideWorldBounds(true); // Paddle bleibt im Spielfeld
// Cursor-Tasten einlesen
cursors = this.input.keyboard.createCursorKeys();
// Mausbewegung erfassen – X-Position übernimmt Paddle (Y bleibt fix)
this.input.on('pointermove', pointer => {
paddle.x = Phaser.Math.Clamp(pointer.x, paddle.width / 2, width - paddle.width / 2);
});
}
function update() {
// Paddle mit Pfeiltasten bewegen
if (cursors.left.isDown) {
paddle.setVelocityX(-300);
} else if (cursors.right.isDown) {
paddle.setVelocityX(300);
} else {
paddle.setVelocityX(0);
}
// Ball prallt noch nicht am Paddle ab
// Ball kann also weiterhin frei im Spielfeld herumfliegen
}
};
Das Paddle wird analog zum Ball aus den Assets geladen und ins Spiel eingebunden.
paddle.setCollideWorldBounds(true);
Das Paddle prallt von den Wänden des Spielfeldes ab. Damit bleibt es immer im sichtbaren Bereich.
cursors = this.input.keyboard.createCursorKeys();
Wir erzeugen eine Referenz auf die Pfeiltasten (Cursor links/rechts).
if (cursors.left.isDown) {...
Im update()
-Loop fragen wir jetzt die Cursor-Tasten regelmäßig ab und bewegen das Paddle entsprechend nach links oder rechts.
this.input.on('pointermove', pointer => {
An dieser Stelle binden wir die x-Koordinate des Paddles direkt an die x-Koordinate des Mauszeiger (Pointer). Das Paddle kann damit horizontal mit der Maus bewegt werden.