Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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
Java 在身体中央触摸以做出反应_Java_Libgdx_Box2d - Fatal编程技术网

Java 在身体中央触摸以做出反应

Java 在身体中央触摸以做出反应,java,libgdx,box2d,Java,Libgdx,Box2d,我允许用户拖动手指来选择身体。然后将实体添加到阵列列表中,以便稍后删除 问题是,我希望用户的手指必须穿过身体中部,然后才能添加到阵列中,而不能触摸身体的任何位置 现在,当用户手指甚至穿过身体的一个角落时,它被添加到数组中,它不会仅在用户手指穿过身体的中间或身体内部的中间时添加 有什么想法吗?我的代码如下 我用圆形来表示他的身体 @Override public boolean touchDragged(int x, int y, int pointer) { // TODO Auto-g

我允许用户拖动手指来选择身体。然后将实体添加到阵列列表中,以便稍后删除

问题是,我希望用户的手指必须穿过身体中部,然后才能添加到阵列中,而不能触摸身体的任何位置

现在,当用户手指甚至穿过身体的一个角落时,它被添加到数组中,它不会仅在用户手指穿过身体的中间或身体内部的中间时添加

有什么想法吗?我的代码如下

我用圆形来表示他的身体

@Override
public boolean touchDragged(int x, int y, int pointer) {
    // TODO Auto-generated method stub

    vecTemp.set(x, y, 0);
    camera.unproject(vecTemp);

    hitBody = null;

    world.QueryAABB(callback, vecTemp.x - 0.1f, vecTemp.y - 0.1f, vecTemp.x + 0.1f, vecTemp.y + 0.1f);

    if(!selectedObjects.contains(hitBody, true) && hitBody != null){     
        selectedObjects.add(hitBody);
    }

    return false;
}

你说的“中间”是什么意思?您可能希望使用夹具的TestPoint功能来检查触摸是否在夹具内部。Box2D测试台应该有一个示例,您可以查看它是否可以拖动实体。@iforce2d基本上是现在,当用户将手指拖动到一个实体上时,他们可能只需触摸另一个实体的egde,并将其添加到要移除的阵列中。我不希望发生这种情况,相反,我希望用户必须交叉触摸身体中部,以便选择它,而不是边缘。