Spel Zwaartekracht
Sommige spellen hebben krachten die het spelonderdeel in één richting trekken, zoals de zwaartekracht objecten naar de grond trekt.
Zwaartekracht
Om deze functionaliteit aan onze componentconstructor toe te voegen, voegt u eerst een gravity
eigenschap toe die de huidige zwaartekracht instelt. Voeg vervolgens een gravitySpeed
eigenschap toe, die elke keer dat we het frame bijwerken toeneemt:
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;
}
}
Raak de bodem
Om te voorkomen dat het rode vierkant voor altijd valt, stop het vallen wanneer het de onderkant van het spelgebied raakt:
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;
}
}
Versnellen
Als je in een spel een kracht hebt die je naar beneden trekt, zou je een methode moeten hebben om het onderdeel te laten versnellen.
Activeer een functie wanneer iemand op een knop klikt en laat het rode vierkant de lucht in vliegen:
Voorbeeld
<script>function accelerate(n) {
myGamePiece.gravity = n;
}</script>
<button onmousedown="accelerate(-0.2)" onmouseup="accelerate(0.1)">ACCELERATE</button>
Een spel
Maak een spel op basis van wat we tot nu toe hebben geleerd: