Spil gravitation

I nogle spil findes der en kraft, der trækker spilkomponenter i en retning, f.eks. trækker tyngdekraften objekter mod jorden.


tyngdekraft

For at tilføje denne egenskab til vores komponentkonstruktør, skal du først tilføje en gravity Egenskab, som indstiller den nuværende tyngdekraft. Derefter tilføj en gravitySpeed Egenskaber, som øges hver gang vi opdaterer rammen:

Eksempel

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;
  }
}

Prøv det selv

Rundtom

For at forhindre, at den røde firkant falder for evigt, skal vi stoppe faldet, når den når bunden af spilområdet:

Eksempel

  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;
    }
  }

Prøv det selv

Accelerer

I spillet skal du designe en metode til at tvinge komponenten til at accelerere, når der er en kraft der trækker firkanten nedad.

Når nogen klikker på knappen, udløses en funktion, der får den røde firkant til at flyve op i luften:

Eksempel

<script>
function accelerate(n) {
  myGamePiece.gravity = n;
}
</script>
<button onmousedown="accelerate(-0.2)" onmouseup="accelerate(0.1)">Accelerer</button>

Prøv det selv

Et spil

Lav et spil baseret på vores viden indtil videre:

Eksempel

Prøv det selv

Klik på accelerationsknappen for at starte spillet.

Hvor lang tid kan du leve? Brug accelerationsknappen for at forblive i luften.