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));
}
私が言及した「奇妙な動作」は、あたかもアンカーポイントのように、確立されたポイント(オブジェクトの幅の2倍の軌道)の周りに体を引き寄せるように見えるため、BodyBにアンカーポイントを確立する方法を探していました体の外にありました(六角形、ところで)。しかし、libgdx でこれを行う方法が見当たりません。
私が間違っていることを誰かが知っていますか?前もって感謝します!