O‘yin tortishish kuchi


Ba’zi o‘yinlarda o‘yin komponentini bir yo‘nalishga tortadigan kuchlar bo‘ladi — xuddi tortishish kuchi jismlarni yerga tortgani kabi.




ULASHISH

Tortishish kuchi

Bu funksionallikni komponent konstruktorimizga qo‘shish uchun avval joriy tortishish kuchini belgilaydigan gravity xususiyatini qo‘shing. So‘ngra kadrni har safar yangilaganimizda ortib boradigan gravitySpeed xususiyatini qo‘shing:

Misol

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;   } }
O‘zingiz sinab ko‘ring »


Pastki chegaraga yetish

Qizil kvadrat cheksiz qulab tushmasligi uchun u o‘yin maydonining pastki qismiga yetganda qulashni to‘xtating:

Misol

  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;     }   }
O‘zingiz sinab ko‘ring »

Yuqoriga tezlanish

O‘yinda sizni pastga tortadigan kuch bo‘lsa, komponentni yuqoriga tezlanishga majbur qiladigan metod ham bo‘lishi kerak.

Kimdir tugmani bosganda funksiyani ishga tushiring va qizil kvadratni havoga ko‘tarilishga majbur qiling:

Misol

<script>
function accelerate(n) {   myGamePiece.gravity = n; }
</script> <button onmousedown="accelerate(-0.2)" onmouseup="accelerate(0.1)">ACCELERATE</button>
O‘zingiz sinab ko‘ring »

O‘yin

Hozirgacha o‘rganganlarimiz asosida o‘yin yarating:

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!