繁体   English   中英

LibGDX Box2D无法渲染

[英]LibGDX Box2D not rendering

我是Box2D和LibGDX的新手,我正在尝试进行一个简单的测试。 该代码应呈现一个2x2的框,但不是。这是我的代码:

public class PhysicsDemo implements ApplicationListener {
World world = new World(new Vector2(0, -20), true);
Box2DDebugRenderer debugRenderer;
private OrthographicCamera camera;


@Override
public void create() {      

    camera = new OrthographicCamera();
    camera.position.set(0, 0, 0);


    //Ground body
    BodyDef groundBodyDef =new BodyDef();
    groundBodyDef.position.set(0.0f, -20f);
    Body groundBody = world.createBody(groundBodyDef);
    PolygonShape groundBox = new PolygonShape();
    groundBox.setAsBox(50.0f, 10.0f);
    groundBody.createFixture(groundBox, 0.0f);

    //Dynamic Body
    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.DynamicBody;
    bodyDef.position.set(0.0f, 4.0f);
    Body body = world.createBody(bodyDef);
    PolygonShape dynamicBox = new PolygonShape();
    dynamicBox.setAsBox(1.0f, 1.0f);
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = dynamicBox;
    fixtureDef.density = 1.0f;
    fixtureDef.friction = 0.3f;
    body.createFixture(fixtureDef);

    debugRenderer = new Box2DDebugRenderer();


}





@Override
public void dispose() {



}

@Override
public void render() {      

    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    debugRenderer.render(world, camera.combined);


}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}

我似乎什么也没显示,我得到的只是一个黑屏。 有人知道怎么了吗?

谢谢!

我有同样的问题。 您在评论部分提到了解决方案,但我想对此给出正式答案。

在您的代码(和我的代码)中,没有设置camera.viewportWidthcamera.viewportHeight ...只需通过camera.viewportWidth = Gdx.graphics.getWidth()显式设置这两个值,或通过像构造器一样传递值即可所以:

OrthographicCamera camera = new OrthographicCamera(Gdx.graphics.getWidth(), 
                                                   Gdx.graphics.getHeight());

(对于那些不知道我正在使用Gdx方法获取屏幕分辨率的人,因为box2d通常在Java中与libGDX一起使用,您可以用您使用的任何屏幕分辨率替换Gdx.graphics.getWidth()

这样设置相机位置

camera.position.set(camera.viewportWidth * .5f,camera.viewportHeight * .5f,0f);

并添加此

camera.update();

我有同样的问题,我已经解决了它要求所有super()

super.pause();

super.resize(width,height);

super.render();

super.dispose();

super.resume();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM