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.
2d
mathematics
physics
Xavura
quelle
quelle
velocity.i += speed;
diespeed
ist in der Tat Ihre Beschleunigung, dh die Rate , die Geschwindigkeit ändert sich durch. :)Antworten:
Etwas so Einfaches wie
funktioniert gut.
quelle
In Pseudocode mache ich Variationen davon:
Geschwindigkeit + = ((MoveDirection * MaximumSpeed) - Geschwindigkeit) * AccelerationFactor
Wo:
Womit sowohl Beschleunigung als auch Verzögerung gut in einer gekrümmten statt in einer Linie gehandhabt werden können. Wenn Sie unterschiedliche Beschleunigungs- und Verzögerungsraten wünschen, können Sie IF-Anweisungen ausführen, die bestimmen, ob der Spieler versucht, sich nicht oder in die entgegengesetzte Richtung zu bewegen.
quelle
Die Antworten hier (
vel = vel * 0.9
) sind tatsächlich dämpfend , nicht das, was ich als "Verzögerung" bezeichnen würde .Ich bremse oft so:
Einige Vor- und Nachteile gegenüber Dämpfung:
Vorteile :
Nachteile :
quelle
Ganz einfach ausgedrückt, in Pseudocode:
Sie müssten jedoch prüfen, ob (aktuelle Geschwindigkeit <0,001f) oder etwas anderes und auf 0 setzen.
quelle