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 arbeiten wir daran, es zu verfeinern. Wir haben bereits Tastatursteuerung hinzugefügt, aber wir könnten auch leicht eine Maussteuerung hinzufügen.

Mausbewegung erfassen

Das Erfassen von Mausbewegungen ist noch einfacher als das Erfassen von Tastendrücken: Alles, was wir brauchen, ist der Listener für das mousemove Ereignis. Fügen Sie die folgende Zeile an derselben Stelle wie die anderen Event-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 zunächst einen relativeX-Wert, der gleich der horizontalen Mausposition im Ansichtsfenster (e.clientX) minus der Entfernung zwischen der linken Kante des Canvas und der linken Kante des Ansichtsfensters (canvas.offsetLeft) ist — dies entspricht effektiv der Entfernung zwischen der linken Kante des Canvas und dem Mauszeiger. Wenn die relative X-Zeigerposition größer als null und kleiner als die Canvas-Breite ist, liegt 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 Schlägerbreite gesetzt, sodass die Bewegung tatsächlich relativ zur Mitte des Schlägers erfolgt.

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 haben wir ein vollständiges Spiel und werden unsere Serie von Lektionen mit einigen kleinen Anpassungen abschließen — Abschluss.