//Calculate time step
float timeStep = stepTimer.getTicks()/1000.f;
//Move for time step
dot.move(timeStep);
//Restart step timer
stepTimer.start();
Dieser Code aus Lazy Foo SDL Tutorials sollte eine variable Zeitschritt basierte Bewegung System erstellen. Meine Hauptfrage dazu ist, wie es funktioniert? float timeStep = stepTimer.getTicks()/1000.f;
berechnet die verstrichene Zeit in Sekunden. Wenn also beispielsweise 2 Millisekunden seit dem letzten Aufruf vergangen sind, wird timeStep var 0,02 Sekunden lang sein. Wie ist das möglicherweise im Code nutzbar? Wenn ich eine konstante Geschwindigkeit von 10 Pixeln pro Sekunde habe und ich möchte, dass diese Geschwindigkeit mit jeder Framerate arbeitet, müsste ich meinen px/s mit diesem Wert multiplizieren (0,02).Wie funktioniert Bewegung in einem Spiel-Engine
Dies würde jedoch die folgenden posx += 10*0.02
ergeben. Und wie wir gerade gelernt haben, bedeutet das, dass wir die Position um einen Wert von 0,2 Pixeln erhöhen (was natürlich nicht funktioniert und nur den Wert unterschreitet).
Was fehlt mir hier?