Hallo,
ich bin gerade dabei für meine 2D Engine ein Physiksystem mit Hilfe von Newton zu bauen. Das ganze Funktioniert soweit ganz gut. Problem ist nur, dass die Simulation schrecklich träge ist, d.h. meine Kisten fallen furchtbar langsam.
Mit folgendem Code rufe ich die "NewtonUpdate" Funktion mit einer festgelegten Framerate (100FPS) auf:
Delphi-Quellcode:
FTime := FTime + timegap*1000; //Timegap ist die Zeit seit dem letzten Frame in Sekunden
while FTime > FInterval do
begin
FTime := FTime - FInterval;
NewtonUpdate(NewtonWorld, FInterval / 1000);
end;
Mit folgendem Code habe ich genau das gleiche Ergebnis:
NewtonUpdate(NewtonWorld, timegap);
Mit
NewtonUpdate(NewtonWorld, 0.1);
ist die Geschwindigkeit in Ordnung aber ist nun von den FPS abhängig.
In den Demos, die ich gefunden habe wird das ganze wie im ersten Code gemacht, allerdings fallen die Kisten dort mit "Normaler" geschwindigkeit.
Ich denke, dass dies bei mir am Koordinatensystem liegt. Schließlich arbeitet meins mit absoluten Pixeln und in den 3D Anwendungen mit viel kleineren Fließkommazahlen.
Kann ich irgendwie die Bewegungen schneller machen, also die gesamte Simulation beschleunigen? In der Dokumentation bin ich auf keine entsprechende Funktion gestoßen, aber vielleicht bin ich auch einfach nur Blind.
Schonmal Danke,
Igel457