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 gravity
Eigenschaft hinzu, die die aktuelle Schwerkraft festlegt. Fügen Sie dann eine gravitySpeed
Eigenschaft 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: