جاذبه بازی

در برخی بازی‌ها، نیرویی وجود دارد که اجزا را به یک سمت می‌کشد، مانند نیروی جاذبه که اجزا را به سمت زمین می‌کشد.


重力

اگر می‌خواهید این ویژگی را به تابع سازنده‌ی ما اضافه کنید، ابتدا یک gravity کیفیت، کی کیفت تنظیم می‌کند که نیروی جاذبه را. سپس یک gravitySpeed ویژگی‌ها، هر بار که ما فریم را به‌روزرسانی می‌کنیم، افزایش می‌یابند:

مثال

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

خودتان امتحان کنید

به پایین رسیدن

برای جلوگیری از اینکه بلوک قرمز همیشه به پایین بیفتد، باید در زمانی که به پایین‌ترین نقطه بازی می‌رسد، حرکت آن را متوقف کنیم:

مثال

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

خودتان امتحان کنید

تسریع

در بازی، وقتی که یک نیرویی بلوک را به پایین می‌کشد، باید یک روش طراحی کنید که باعث شود اجزا به سرعت حرکت کنند.

جب کسی باتن کلیک کند، یک تابع فعال می‌شود که بلوک قرمز را به هوا می‌برد:

مثال

<script>
function accelerate(n) {
  myGamePiece.gravity = n;
}
</script>
<button onmousedown="accelerate(-0.2)" onmouseup="accelerate(0.1)">تسریع</button>

خودتان امتحان کنید

یک بازی

بر اساس دانشی که تا به حال آموخته‌ایم، یک بازی بسازید:

مثال

خودتان امتحان کنید

برای شروع بازی، دکمه شتاب را کلیک کنید.

چند سال می‌توانید زنده بمانید؟ از دکمه شتاب برای ماندن در هوا استفاده کنید.