Ich benutze mousejoint, um Körper in box2d zu ziehen, aber es verursacht Trägheitsverzögerung.Box2d: mousejoint ohne Trägheitsverzögerung
Gibt es eine Möglichkeit, einen Körper sofort zu ziehen?
Ich benutze mousejoint, um Körper in box2d zu ziehen, aber es verursacht Trägheitsverzögerung.Box2d: mousejoint ohne Trägheitsverzögerung
Gibt es eine Möglichkeit, einen Körper sofort zu ziehen?
Die Lösung besteht darin, die Eigenschaften frequencyHz und dampingRatio in Ihrem b2MouseJointDef abzustimmen.
Zum Beispiel:
b2MouseJointDef md;
md.body1 = _groundBody;
md.body2 = body;
md.target = p;
md.maxForce = 10000.0f * body->GetMass();
md.dampingRatio = 0;
md.frequencyHz = 100;
_world->CreateJoint(&md);
Ich versuche, ein Pong-Stil-Spiel in Processing/Box2d-Bibliothek zu implementieren, und ich erwarte das gleiche Problem. Eine Sache, die einem in den Sinn kommt, ist, ein verstecktes Objekt in der Box2d-Welt zu pflegen, eines, das auf herkömmliche Weise mit Verbindungen arbeitet und dann ein virtuelles Objekt zeichnet, das der Maus ohne Rahmenverzögerung folgt. Dies könnte ausreichen, um den Benutzer zu täuschen.
Auf der anderen Seite ist Box2d keine strenge Physiksimulation und erlaubt etwas Vergebung in überlappenden Objekten, so dass es wirklich so aussieht, als sollte es einen Weg geben, dies zu tun.
Siehe meine Antwort für die Lösung! – Ricibald
Danke! Funktioniert perfekt. Ich habe ein Beispiel für die Verwendung von mousejoint in Processing hier gefunden: http://processing.org/discourse/yabb2/YaBB.pl?num=1213404906/30 und habe es mit deinem Vorschlag modifiziert. –
Ich kann meine eigene Antwort nicht abstimmen! Bitte stimme es ab, so dass die Antwort oben erscheint! – Ricibald
Programmsprache? – antpaw
Originalversion von Box2D: C++ – Ricibald