Box2d: mousejoint senza indugio inerziale
Domanda
sto usando mousejoint per trascinare corpi in box2d, ma provoca ritardo inerziale.
Esiste un modo per trascinare un corpo istantaneamente?
Soluzione
La soluzione è quella di sintonizzare le proprietà frequencyHz e dampingRatio nel vostro b2MouseJointDef.
Ad esempio:
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);
Altri suggerimenti
Sto cercando di implementare un gioco pong in stile libreria di elaborazione / Box2d e Prevedo avendo lo stesso problema. Una cosa che mi viene in mente è quello di mantenere un oggetto nascosto nel mondo Box2d, uno che opera con giunti modo convenzionale, e quindi disegnare un oggetto virtuale che segue il mouse senza ritardo dei fotogrammi. Questo potrebbe essere sufficiente per ingannare l'utente.
D'altra parte, Box2d non è una rigorosa simulazione fisica e consente una certa perdono oggetti sovrapposti, così sembra davvero come ci dovrebbe essere un modo per farlo.