Domanda

sto usando mousejoint per trascinare corpi in box2d, ma provoca ritardo inerziale.

Esiste un modo per trascinare un corpo istantaneamente?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top