Spel Swaartekrag


Sommige speletjies het kragte wat die spelkomponent in een rigting trek, soos swaartekrag voorwerpe na die grond trek.




Swaartekrag

Om hierdie funksionaliteit by ons komponentkonstruktor te voeg, voeg eers 'n gravityeienskap by wat die huidige swaartekrag bepaal. Voeg dan 'n gravitySpeedeiendom by, wat toeneem elke keer as ons die raam opdateer:

Voorbeeld

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


Druk die onderkant

Om te verhoed dat die rooi vierkant vir ewig val, stop die val wanneer dit die onderkant van die spelgebied tref:

Voorbeeld

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


Versnel op

In 'n speletjie, wanneer jy 'n krag het wat jou aftrek, moet jy 'n metode hê om die komponent te dwing om op te versnel.

Aktiveer 'n funksie wanneer iemand 'n knoppie klik, en laat die rooi vierkant in die lug opvlieg:

Voorbeeld

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

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

N spel

Maak 'n speletjie gebaseer op wat ons tot dusver geleer het:

Voorbeeld