Peli painovoima

Joidenkin pelien osissa on voima, joka vetää pelielementtejä yhteen suuntaan, esimerkiksi painovoima vetää objekteja maahan


重力

Jos haluat lisätä tämän ominaisuuden komponentin rakentajafunktiolle, lisää ensin yksi gravity Ominaisuus, joka asettaa nykyisen painovoiman. Lisää sitten yksi gravitySpeed Ominaisuudet, jotka lisääntyvät joka kerta, kun päivitysruutu päivitetään:

Esimerkki

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

Kokeile itse

Pudota

Jotta punainen laatikko ei laske loputtomasti alas, meidän täytyy lopettaa sen laskeutuminen, kun se saavuttaa pelialueen alarajan:

Esimerkki

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

Kokeile itse

Lisää nopeutta

Pelissä, kun voima vetää laatikkoa alas, sinun tulisi suunnitella tapa pakottaa komponentti kiihtymään.

Kun joku napsauttaa painiketta, käynnistetään funktio, joka saa punaisen laatikon hyppimään ilmassa:

Esimerkki

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

Kokeile itse

Yksi peli

Valmistele peli, jonka olemme tähän asti oppineet:

Esimerkki

Kokeile itse

Napsauta nopeutuspainiketta aloittaaksesi pelin.

Kuinka kauan kestää? Käytä nopeutuspainiketta pysyäksesi ilmassa.