Mouse controls

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

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

Lauschen der Mausbewegung

Das Lauschen von Mausbewegungen ist sogar einfacher als das Lauschen 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 Ereignislistener hinzu, direkt unter dem keyup event:

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

Verankerung der Paddelbewegung an die Mausbewegung

Wir können die Paddelposition basierend auf den Zeigerkoordinaten aktualisieren — die folgende Handler-Funktion wird genau das tun. 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 Viewport (e.clientX) minus der Entfernung zwischen dem linken Rand des Canvas und dem linken Rand des Viewports (canvas.offsetLeft) ist — effektiv entspricht dies der Entfernung zwischen dem linken Canvas-Rand und dem Mauszeiger. Wenn die relative X-Position des Zeigers 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 Paddels) wird auf den relativeX-Wert minus der halben Breite des Paddels gesetzt, so dass die Bewegung tatsächlich in Bezug auf die Mitte des Paddels erfolgt.

Das Paddel wird nun der Position des Mauszeigers folgen, aber da wir die Bewegung auf die Größe der Canvas beschränken, wird es nicht komplett auf einer der beiden Seiten verschwinden.

Vergleichen Sie Ihren Code

Dies ist der aktuellste Zustand des Codes zum Vergleich:

Hinweis: Versuchen Sie, die Grenzen der Paddelbewegung anzupassen, so dass das gesamte Paddel an beiden Rändern der 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 weiteren kleinen Anpassungen abschließen — Finishing up.