Ich benutze box2d für die Physik-Simulation. Ich bewege einen Kreis mit den Pfeiltasten, indem ich einen Impuls auf den Körper drücke, wenn eine Taste gedrückt wird. Leider bewegt sich der Zirkel quälend langsam und scheint nicht so zu beschleunigen, wie es ein echter Körper tun sollte. Die Abmessungen meiner Welt sind 400x800 Pixel. Der Radius des Kreiskörpers ist 20f.
Laut dies kann das Problem dadurch gelöst werden, dass der Kreisradius verkleinert wird bei der Erstellung und Skalierung nach dem Erhalt der Körperposition während des Malens. Es scheint überhaupt keinen Unterschied zu machen. Gibt es einen Schritt oder eine Einstellung, die ich hier vermisse?
Es hat ziemlich lange gedauert, das jetzt zu verstehen, aber da ist eigentlich IS eine harte Grenze für die Geschwindigkeit in Box2D. Siehe hier :
Es gibt eine maximale Bewegungsgrenze von 2,0 Einheiten pro Zeitschritt, die in der Datei b2Settings.h im Quellcode angegeben ist.
Wenn Sie bei 60 FPS einen Schritt pro Frame haben, können sich Ihre Körper mit einer maximalen Geschwindigkeit von 120 m / s bewegen. Vielleicht wird das jemandem ein bisschen Zeit sparen.
Ja, es gibt einen Unterschied zwischen der Größe, die Sie verwenden. Box2d
arbeitet über Gleitkommazahlen und somit ist die Genauigkeit begrenzt und die Simulationsqualität ist unterschiedlich. Box2d
ist so eingestellt, dass es am besten mit dynamischen Körpern der Größe 0.1 to 10
funktioniert.
Im Allgemeinen sollten Sie lieber eine Einheit für Physik und andere für Grafiken verwenden
Nun zu Ihrer Frage. Die Körpergeschwindigkeit wird durch Kollisionen, Reibung (wenn ein Körper über die andere gleitet) und durch linear damping
beeinflusst. Überprüfen Sie also, welchen Wert für linear damping
Sie verwenden (es ist standardmäßig nicht Null, wie ich mich erinnere). Soweit ich weiß, gibt es keine Geschwindigkeitsbegrenzungen, aber eine höhere Geschwindigkeit führt zu Kollisionen mit geringerer Qualität, wenn der gleiche Zeitschritt verwendet wird.
Tags und Links libgdx game-physics box2d physics-engine