2012-07-16 118 views
0

我是Box2D和LibGDX的新手,我正在尝试渲染一个简单的测试。该代码应该呈现2×2箱,但它不会在这里是我的代码:LibGDX Box2D不渲染

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() { 
} 
} 

我似乎无法显示任何内容,我得到的是一个黑色的屏幕。有谁知道什么是错的?

谢谢!

+0

您没有设置相机位置。也许一切正常,但相机并没有一个正确的位置。 – Aliaaa 2012-07-16 19:37:39

+0

谢谢!我认为我为新的OrthographicCamera使用了错误的构造器。我现在使用的那个要求提供视口角色。我现在工作。 – foobar5512 2012-07-16 23:15:05

回答

1

设置相机位置这样

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

并添加此

camera.update();

2

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

在你的代码(和我)

没有camera.viewportWidthcamera.viewportHeight集...只是设置这两个值显式地通过camera.viewportWidth = Gdx.graphics.getWidth() 或者通过构造函数传递的值,像这样:

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

(对于那些谁不知道我用得到的屏幕分辨率,因为Box2D的是在Java中通常使用libGDX的GDX方法,你可以与任何屏幕分辨率您使用替代Gdx.graphics.getWidth()

0

i'have相同问题我解决了o呼吁所有super()

super.pause();

super.resize(width,height);

super.render();

super.dispose();

super.resume();