Я пытался использовать MouseJoint для перемещения фигуры туда, куда пользователь прикасается.Но деталь, на которую воздействует сустав, ведет себя странно, никогда не доходя до сути.Это код (x и y уже преобразованы в «физические» единицы):
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));
}
Я искал способ установить точку привязки в BodyB как «странное поведение», которое яупомянутое, кажется, заставляет тело притягиваться вокруг установленной точки (орбита, в два раза превышающая ширину объекта), как если бы точка привязки находилась снаружи тела (в форме шестиугольника, кстати).Но я не вижу никакого способа сделать это в libgdx.
Кто-нибудь знает, что я делаю неправильно?Заранее спасибо!