Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Maussteuerung

Dies ist der 9. Schritt von 10 des Gamedev Canvas Tutorials. Den Quellcode, wie er nach Abschluss dieser Lektion aussehen sollte, finden Sie unter Gamedev-Canvas-workshop/lesson9.html.

Das Spiel selbst ist eigentlich fertig, also lassen Sie uns daran arbeiten, es zu optimieren. Wir haben bereits Steuerungen über die Tastatur hinzugefügt, aber wir könnten auch problemlos Maussteuerungen hinzufügen.

Auf Mausbewegungen hören

Auf Mausbewegungen zu hören, ist sogar noch einfacher als auf Tastendrücke: Wir benötigen lediglich den Listener für das mousemove Ereignis. Fügen Sie die folgende Zeile an der gleichen Stelle wie die anderen Event-Listener hinzu, direkt unter dem keyup Ereignis:

js
document.addEventListener("mousemove", mouseMoveHandler);

Die Bewegung des Schlägers an die Mausbewegung binden

Wir können die Schlägerposition basierend auf den Zeigerkoordinaten aktualisieren — die folgende Handler-Funktion wird genau das tun. Fügen Sie die folgende Funktion Ihrem Code hinzu, unter der vorher hinzugefügten Zeile:

js
function mouseMoveHandler(e) {
  const relativeX = e.clientX - canvas.offsetLeft;
  if (relativeX > 0 && relativeX < canvas.width) {
    paddleX = relativeX - paddleWidth / 2;
  }
}

In dieser Funktion berechnen wir zunächst einen relativeX-Wert, der gleich der horizontalen Mausposition im Ansichtsfenster (e.clientX) minus dem Abstand zwischen der linken Kante der Leinwand und der linken Kante des Ansichtsfensters (canvas.offsetLeft) ist — im Grunde ist dies gleich dem Abstand zwischen der linken Kante der Leinwand und dem Mauszeiger. Wenn die relative X-Zeigerposition größer als Null und kleiner als die Breite der Leinwand ist, befindet sich der Zeiger innerhalb der Canvas-Grenzen, und die paddleX-Position (verankert an der linken Kante des Schlägers) wird auf den relativeX-Wert minus die Hälfte der Breite des Schlägers gesetzt, sodass die Bewegung tatsächlich relativ zur Mitte des Schlägers ist.

Der Schläger wird nun der Position des Mauszeigers folgen, aber da wir die Bewegung auf die Größe der Leinwand beschränken, wird er nicht vollständig an beiden Seiten verschwinden.

Vergleichen Sie Ihren Code

Dies ist der neueste Stand des Codes, mit dem Sie ihn vergleichen können:

Hinweis: Versuchen Sie, die Grenzen der Schlägerbewegung anzupassen, sodass der gesamte Schläger an beiden Rändern der Leinwand sichtbar ist, anstatt nur die Hälfte davon.

Nächste Schritte

Jetzt, da wir ein vollständiges Spiel haben, werden wir unsere Serie von Lektionen mit einigen weiteren kleinen Anpassungen abschließen — Finishing up.