Question

J'utilise mousejoint pour faire glisser des corps dans box2d, mais il entraîne des retards d'inertie.

Existe t-il un moyen de faire glisser un corps instantanément?

Était-ce utile?

La solution

La solution est de propriétés tune up frequencyHz et dampingRatio dans votre b2MouseJointDef.

Par exemple:

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);

Autres conseils

Je suis en train de mettre en œuvre un jeu de style pong dans la bibliothèque Traitement / Box2d et je prévois d'avoir le même problème. Une chose qui vient à l'esprit est de maintenir un objet caché dans le monde Box2d, qui fonctionne avec des joints de manière classique, puis dessiner un objet virtuel qui suit la souris sans retard de trame. Cela pourrait être suffisant pour tromper l'utilisateur.

D'autre part, Box2d n'est pas une simulation stricte de la physique et permet une rémission dans les objets qui se chevauchent, il semble vraiment qu'il devrait y avoir une façon de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top