Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 鼠标点工作不正常_Android_Box2d_Libgdx - Fatal编程技术网

Android 鼠标点工作不正常

Android 鼠标点工作不正常,android,box2d,libgdx,Android,Box2d,Libgdx,我一直在尝试使用鼠标点在用户触摸的任何地方移动一块。但是,这件作品受到关节的影响,表现得很奇怪,从未触及要点。这是代码(x和y已转换为“物理”单位): 我一直在寻找在身体B中建立锚定点的方法,因为我提到的“奇怪行为”似乎使身体围绕着建立的点(物体宽度的两倍的轨道)引力,就好像锚定点在身体外部一样(六边形,顺便说一句)。但我在libgdx中看不到任何这样做的方法 有人知道我做错了什么吗?提前谢谢你 嗯,MouseJoint工作正常,我只是误解了MouseJoint的工作原理 正如在Box2d测试床

我一直在尝试使用鼠标点在用户触摸的任何地方移动一块。但是,这件作品受到关节的影响,表现得很奇怪,从未触及要点。这是代码(x和y已转换为“物理”单位):

我一直在寻找在身体B中建立锚定点的方法,因为我提到的“奇怪行为”似乎使身体围绕着建立的点(物体宽度的两倍的轨道)引力,就好像锚定点在身体外部一样(六边形,顺便说一句)。但我在libgdx中看不到任何这样做的方法


有人知道我做错了什么吗?提前谢谢你

嗯,MouseJoint工作正常,我只是误解了MouseJoint的工作原理

正如在Box2d测试床中清楚看到的,MouseJoint用于在选择对象后进行拖动。因此,将在第一个target.set中指定锚点

当我想将对象的中心移动到鼠标(或用户触摸的位置)时,a
mj_def.target.set(body.getPosition().x+2.0f,body.getPosition().y+1.0f)(对象为4.0f乘2.0f)在初始化中解决了问题。此外,它可能不是我的意图的最佳结合点(将特定对象移动到屏幕中的一个位置)

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));
}