Je dis "décélération" parce que je n'utilise pas d'accélération pour le moment; ce que je veux dire, c'est ramener la vitesse vers zéro, finalement arrêter.
Je suis nouveau dans les vecteurs et pas très bon en physique et autres. Comment la "décélération" est-elle normalement gérée?
Ce que j'ai maintenant fonctionne, mais cela semble un peu hackish .
update:function(Game, t, dt) {
var speed = Game.Input.isKeyDown('shift') ? 8 : 4;
if (Game.Input.isKeyDown('a')) {
this.velocity.i -= speed;
}
else if (Game.Input.isKeyDown('d')) {
this.velocity.i += speed;
}
else {
if (Math.abs(this.velocity.i) > 3) {
this.velocity.i += (this.velocity.i > 0) ? -speed : speed;
}
else {
this.velocity.i = 0;
}
}
if (Game.Input.isKeyDown('w')) {
this.velocity.j -= speed;
}
else if (Game.Input.isKeyDown('s')) {
this.velocity.j += speed;
}
else {
if (Math.abs(this.velocity.j) > 3) {
this.velocity.j += (this.velocity.j > 0) ? -speed : speed;
}
else {
this.velocity.j = 0;
}
}
this.updateVectors(dt);
}
J'ai utilisé 3 car tout ce qui est inférieur présente un comportement étrange, je suppose que si j'augmentais la vitesse, il faudrait la changer.
velocity.i += speed;
duspeed
est en fait votre accélération, soit le taux qui change la vitesse par. :)