Ich sage "Verzögerung", weil ich momentan keine Beschleunigung verwende. Ich meine, die Geschwindigkeit zurück in Richtung Null zu bewegen und schließlich anzuhalten.
Ich bin neu in Vektoren und nicht so gut mit Physik und so. Wie wird "Verzögerung" normalerweise gehandhabt?
Was ich jetzt habe, funktioniert, aber es scheint irgendwie hackisch .
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);
}
Ich habe 3 verwendet, weil alles, was niedriger ist, ein seltsames Verhalten zeigt. Ich schätze, wenn ich die Geschwindigkeit erhöhen würde, müsste es geändert werden.
velocity.i += speed;
diespeed
ist in der Tat Ihre Beschleunigung, dh die Rate , die Geschwindigkeit ändert sich durch. :)