Java 在鼠标单击或触摸时将box2d实体变为不可见

Java 在鼠标单击或触摸时将box2d实体变为不可见,java,android,Java,Android,正如你在图片中看到的,我有一个有一些身体的box2d世界。我也设置了一个InputProcessor,但当我点击这些框时,我似乎无法使它们消失 我基本上想要一种鼠标点击/触摸的方式来检查它是否与主体/框相交。如果是的话,我希望那具尸体消失。有人能给我指出正确的方向吗?我试着搭建一个舞台,把身体做成按钮,这样onClickListen就可以工作了,但结果很混乱,无法工作。好的,我自己设法解决了这个问题。这是我在InputProcessor类中编写的代码。 您需要在类的顶部声明hitBody作为bo

正如你在图片中看到的,我有一个有一些身体的box2d世界。我也设置了一个InputProcessor,但当我点击这些框时,我似乎无法使它们消失


我基本上想要一种鼠标点击/触摸的方式来检查它是否与主体/框相交。如果是的话,我希望那具尸体消失。有人能给我指出正确的方向吗?我试着搭建一个舞台,把身体做成按钮,这样onClickListen就可以工作了,但结果很混乱,无法工作。

好的,我自己设法解决了这个问题。这是我在InputProcessor类中编写的代码。 您需要在类的顶部声明hitBody作为body btw,下面没有显示

 Vector3 testPoint = new Vector3();
    QueryCallback callback = new QueryCallback() {

        @Override
        public boolean reportFixture(Fixture fixture) {
            if(fixture.testPoint(testPoint.x,testPoint.y)){
                hitBody = fixture.getBody();
                return false;
            }else{
                return true;
            }

        }
    };

    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {

        GameRender.cam.unproject(testPoint.set(screenX,screenY,0));
        hitBody = null;
        GameWorld.physicsWorld.QueryAABB(callback, testPoint.x - 0.0001f,
                                        testPoint.y - 0.0001f,
                                        testPoint.x + 0.0001f,
                                        testPoint.y + 0.0001f);

        for(DynamicBox b:GameWorld.BoxList){
            if(hitBody == b.boxerino){
                System.out.println("click detected");
                b.shouldRemove = true;
            }
        }

        return false;
    }
有一个布尔值,如果单击body,我会将其变为true。(b.shouldRemove=true),然后我转到更新循环,并从arrayList中删除body和body工厂类

public void update(float delta){



        physicsWorld.step(delta, 2, 2);



        for(int i=0;i<BoxList.size();i++){
            DynamicBox b = BoxList.get(i);
            if(b.shouldRemove==true){
                physicsWorld.destroyBody(b.boxerino);
                BoxList.remove(i);
            }
        }
    }
公共无效更新(浮动增量){
物理世界.阶跃(δ,2,2);
对于(int i=0;i