2012-07-16 116 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();