Grawitacja gry

W niektórych grach istnieje siła przyciągająca komponenty gry w jedną stronę, na przykład grawitacja przyciąga obiekty do ziemi.


grawitacja

Jeśli chcesz dodać tę cechę do naszej funkcji konstruktora komponentu, najpierw dodaj gravity Atrybut, ustawiający bieżącą grawitację. Następnie dodajemy gravitySpeed Atrybuty, które zwiększają się za każdym razem, gdy aktualizujemy klatkę:

Przykład

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

Spróbuj sam

Dotknął dna

Aby zapobiec wiecznemu opadaniu czerwonego bloku, musimy zatrzymać opadanie, gdy osiągnie on dolną część obszaru gry:

Przykład

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

Spróbuj sam

Przyspiesz

W grze, gdy siła pociąga blok w dół, powinieneś zaprojektować metodę, która zmusza komponent do przyspieszenia.

Kiedy ktoś kliknie przycisk, wywołuje to funkcję, która pozwala na lot czerwonego bloku w powietrze:

Przykład

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

Spróbuj sam

Gra

Stwórz grę na podstawie wiedzy, którą zdobyliśmy do tej pory:

Przykład

Spróbuj sam

Kliknij przycisk przyspieszenia, aby zacząć grę.

Jak długo przetrwam? Użyj przycisku przyspieszenia, aby pozostać w powietrzu.