Spiel Schwerkraft


Einige Spiele haben Kräfte, die die Spielkomponente in eine Richtung ziehen, so wie die Schwerkraft Objekte zu Boden zieht.




Schwere

Um diese Funktionalität zu unserem Komponentenkonstruktor hinzuzufügen, fügen Sie zuerst eine gravityEigenschaft hinzu, die die aktuelle Schwerkraft festlegt. Fügen Sie dann eine gravitySpeedEigenschaft hinzu, die jedes Mal zunimmt, wenn wir den Rahmen aktualisieren:

Beispiel

function component(width, height, color, x, y, type) {
  this.type = type;
  this.width = width;
  this.height = height;
  this.x = x;
  this.y = y;
  this.speedX = 0;
  this.speedY = 0;
  this.gravity = 0.05;
  this.gravitySpeed = 0;
 
this.update = function() {
    ctx = myGameArea.context;
    ctx.fillStyle = color;
    ctx.fillRect(this.x, this.y, this.width, this.height);
  }
  this.newPos = function() {
    this.gravitySpeed += this.gravity;
    this.x += this.speedX;
    this.y += this.speedY + this.gravitySpeed;
  }
}


Schlagen Sie den Boden

Um zu verhindern, dass das rote Quadrat für immer herunterfällt, stoppen Sie das Fallen, wenn es den unteren Rand des Spielbereichs erreicht:

Beispiel

  this.newPos = function() {
    this.gravitySpeed += this.gravity;
    this.x += this.speedX;
    this.y += this.speedY + this.gravitySpeed;
    this.hitBottom();
  }
  this.hitBottom = function() {
    var rockbottom = myGameArea.canvas.height - this.height;
    if (this.y > rockbottom) {
      this.y = rockbottom;
    }
  }


Beschleunigen

Wenn Sie in einem Spiel eine Kraft haben, die Sie nach unten zieht, sollten Sie eine Methode haben, um die Komponente zu zwingen, sich zu beschleunigen.

Lösen Sie eine Funktion aus, wenn jemand auf eine Schaltfläche klickt, und lassen Sie das rote Quadrat in die Luft fliegen:

Beispiel

<script>
function accelerate(n) {
  myGamePiece.gravity = n;
}
</script>

<button onmousedown="accelerate(-0.2)" onmouseup="accelerate(0.1)">ACCELERATE</button>

Ein Spiel

Erstellen Sie ein Spiel basierend auf dem, was wir bisher gelernt haben:

Beispiel