Gibt es bei Verwendung von box2d eine obere Grenze für die Geschwindigkeit?

8

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?

Code für Pastebin

    
ivymike 08.02.2013, 13:59
quelle

2 Antworten

20

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.

    
noone 08.10.2013 21:07
quelle
3

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.

    
Andrew 08.02.2013 15:39
quelle