J'ai essayé d'utiliser un MouseJoint pour déplacer une pièce partout où l'utilisateur touche. Mais la pièce, affectée par l'articulation, se comporte bizarrement, n'atteignant jamais le point. Voici le code (x et y sont déjà converties en unités « physiques »):MouseJoint ne fonctionne pas correctement
MouseJointDef mj_def;
MouseJoint mj = null;
Body mj_gbody;
public void move(float x, float y)
{
if(mj == null)
{
BodyDef mgbd = new BodyDef();
mj_gbody = wrld.createBody(mgbd);
//
mj_def = new MouseJointDef();
mj_def.bodyA = mj_gbody;
mj_def.bodyB = body;
mj_def.collideConnected = true;
mj_def.maxForce = 20.0f * body.getMass();
//mj_def.target.set(x,y);
mj = (MouseJoint)wrld.createJoint(mj_def);
body.setAwake(true);
}
mj.setTarget(new Vector2(x, y));
}
Je cherchais un moyen d'établir le point d'ancrage dans le BodyB, comme le « comportement étrange » que je l'ai mentionné semble faire en sorte que le corps gravite autour du point établi (une orbite deux fois la largeur de l'objet), comme si le point d'ancrage était à l'extérieur du corps (en forme d'hexagone, btw). Mais je ne vois aucun moyen de le faire dans libgdx.
Est-ce que quelqu'un sait ce que je fais mal? Merci d'avance!