Maussteuerung

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

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

Mausbewegungen abhören

Mausbewegungen abzuhören ist sogar noch einfacher als Tastaturanschläge abzuhören: alles was wir brauchen, ist der Listener für das mousemove-Event. Fügen Sie die folgende Zeile an derselben Stelle wie die anderen Event-Listener hinzu, direkt unterhalb des keyup events:

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

Verankerung der Schlägerbewegung an die Mausbewegung

Wir können die Schlägerposition basierend auf den Zeigerkoordinaten aktualisieren — die folgende Handlerfunktion wird genau das tun. Fügen Sie die folgende Funktion zu Ihrem Code hinzu, unterhalb 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 zuerst einen relativeX-Wert, der gleich der horizontalen Mausposition im Ansichtsfenster (e.clientX) minus der Entfernung zwischen dem linken Rand der Leinwand und dem linken Rand des Ansichtsfensters (canvas.offsetLeft) ist — effektiv ist dies gleich der Entfernung zwischen dem linken Leinwandrand 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 Leinwandgrenzen, und die paddleX-Position (verankert am linken Rand des Schlägers) wird auf den relativeX-Wert minus die halbe Breite des Schlägers gesetzt, sodass die Bewegung tatsächlich relativ zur Mitte des Schlägers erfolgt.

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 von einer der Seiten verschwinden.

Vergleichen Sie Ihren Code

Dies ist der aktuellste Stand des Codes, mit dem Sie 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

Nun, da wir ein vollständiges Spiel haben, werden wir unsere Reihe von Lektionen mit einigen weiteren kleinen Anpassungen abschließen — Beenden.