如何在Libgdx Box2d中保持身体不被渲染?

时间:2017-11-11 20:06:56

标签: java libgdx box2d

我无法在任何地方找到答案,我开始怀疑这是否可行。如何在LIbgdx“Invisble”中保持身体?因此,它将保持与所有事物的互动,并像常规身体一样行动,但不会被渲染

1 个答案:

答案 0 :(得分:1)

您可以创建自己的Box2dDebugRenderer并覆盖renderBody方法。

class MyBox2dRenderer extends Box2DDebugRenderer {

    private ArrayList<Body> notRenderingBodies; // array of vodies that you dont want to render


    public MyBox2dRenderer(ArrayList<Body> notRenderingBodies) { 
        super();

        this.notRenderingBodies = notRenderingBodies; 
    }

    @Override
    protected void renderBody(Body body) {
        for (Body b : notRenderingBodies) { // loop through all bodies in array
            if (b == body){ // if given body equals by reference to one from list than return 
                return;
            }
        }
        super.renderBody(body);
    }

    public ArrayList<Body> getNotDenderingBodies() {
        return notRenderingBodies;   
    }

    public void setNotDenderingBodies(ArrayList<Body> notDenderingBodies) {
        this.notRenderingBodies = notDenderingBodies;
    }
}