Maussteuerungen

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

Das Spiel selbst ist eigentlich fertig, also arbeiten wir daran, es zu verfeinern. Wir haben bereits Tastatursteuerungen hinzugefügt, aber wir könnten ebenso einfach Maussteuerungen hinzufügen.

Lauschen auf Mausbewegungen

Das Lauschen auf Mausbewegungen ist sogar einfacher als das Lauschen auf Tastendrücke: Alles, was wir brauchen, ist der Listener für das mousemove-Ereignis. Fügen Sie die folgende Zeile an derselben Stelle wie die anderen Ereignis-Listener hinzu, direkt unter dem keyup event:

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

Verankern der Schlägerbewegung an die Mausbewegung

Wir können die Schlägerposition basierend auf den Zeigerkoordinaten aktualisieren – die folgende Handlerfunktion erledigt genau das. Fügen Sie die folgende Funktion zu Ihrem Code hinzu, unterhalb der zuvor 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 zuerst einen relativeX-Wert, der gleich der horizontalen Mausposition im Ansichtsfenster (e.clientX) minus der Entfernung zwischen dem linken Rand des Canvas und dem linken Rand des Ansichtsfensters (canvas.offsetLeft) ist – effektiv entspricht dies dem Abstand zwischen dem linken Rand des Canvas und dem Mauszeiger. Wenn die relative X-Zeigerposition größer als null und kleiner als die Canvas-Breite ist, befindet sich der Zeiger innerhalb der Canvas-Grenzen, und die paddleX-Position (verankert am linken Rand des Schlägers) wird auf den relativeX-Wert minus der halben Breite des Schlägers gesetzt, sodass die Bewegung tatsächlich relativ zur Mitte des Schlägers ist.

Der Schläger folgt nun der Position des Mauszeigers, aber da wir die Bewegung auf die Größe des Canvas beschränken, verschwindet er nicht vollständig an einer der beiden Seiten.

Vergleichen Sie Ihren Code

Dies ist der neueste Stand des Codes zum Vergleich:

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

Nächste Schritte

Jetzt, wo wir ein vollständiges Spiel haben, beenden wir unsere Serie von Lektionen mit ein paar weiteren kleinen Anpassungen — Abschluss.