accelerate(var* speed,var accel,var friction);
Berechnet die Bewegungsdistanz für eine gegebene Geschwindigkeit (speed) und
Beschleunigung (accel). Der Widerstand durch ein umgebendes Medium lässt sich über den Reibungsparameter (friction) angeben. Diese Funktion kann für Actor-Bewegung und Rotation verwendet werden.
Parameter:
speed |
gegenwärtige Geschwindigkeit in Quants pro Tick. Dieser Wert wird von der Beschleunigung verändert. |
accel |
Beschleunigung in Quants pro Quadrat-Tick. |
friction |
Reibungswiderstand des umgebenden Mediums im Bereich 0..1. 0 bedeutet keine Reibung, 1 völliger Widerstand. |
Rückgabewert:
Zurückzulegende Strecke in Quants.
Modifiziert:
speed - Aktueller Geschwindigkeitsvektor in Quants pro Tick.
Geschwindigkeit:
Schnell
Algorithmus:
if (friction == 0) {
distance = speed*time_step + 0.5*accel*time_step*time_step
speed = speed + accel*time_step
} else {
distance = accel*time_step/friction + (speed-accel/friction)*(1-exp(-friction*time_step))/friction
speed = accel/friction + (speed-accel/friction)*exp(-friction*time_step)
}
Beispiel:
var aspeed; // lokale Variable um die gegenwärtige Geschwindigkeit zu speichern
// beschleunige die Camera Links/Rechts Drehung mit den Cursortasten.
vec_add(camera.pan,accelerate(aspeed,5*key_force.x,0.7));
Siehe auch:
vec_accelerate,smooth
► Aktuelle Version Online