2013-07-09 7 views
2

Я новичок в Box2D. Я просто пытаюсь следовать простой учебник, но при попытке интегрировать его в мой код:Box2D Libgdx черный экран

я начинаю создавать свою игру Libgdx:

public void create() { 
    float w = Gdx.graphics.getWidth(); 
    float h = Gdx.graphics.getHeight(); 
    camera = new OrthographicCamera(w, h, 0); 
    camera.position.set(camera.viewportWidth * .5f, camera.viewportHeight * .5f, 0f); 
    camera.update(); 
    batch = new SpriteBatch(); 
    viewSwitcher("GameScreen",null); 
    } 

Вызов viewSwitcher, создает новый объект, который создает новый экран:

public GameScreenController(SomeGame t, String id) { 
    somegame = t; 
    db = t.getDB(); 
    world = new World(new Vector2(0, -20), true); 
    screen = new GameScreen(this); 
    [. . .] 
} 

Внутри игровой экран (который расширяет класс Screen) у меня есть метод визуализации:

@Override 
public void render(float delta) { 
    debugRenderer.render(world, camera.combined); 
    world.step(BOX_STEP, BOX_VELOCITY_ITERATIONS, BOX_POSITION_ITERATIONS); 
    stage.act(delta); 
    //stage.draw(); 
} 

Наконец, таймер создает периодически новые объекты. Внутри конструктора этих объектов, у меня есть создание bodyDef:

public void createBodyLetter() { 
    BodyDef bodyDef = new BodyDef(); 
    bodyDef.type = BodyType.DynamicBody; 
    bodyDef.position.set(200, 200); 
    Body body = controller.getWorld().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); 

    dynamicBox.dispose(); 

} 

Результат, когда я начинаю программа просто черный экран. Кто-нибудь знает, где проблема?

Спасибо

+0

Возможно, uncomment '//stage.draw();' :) – Pavel

+0

Да, я знаю! но проблема, которую я хочу решить, не связана с рисованием сцены: D! –

+0

Возникла ли ошибка на javaw.exe? –

ответ

0

инициализации камеры, как

camera = new OrthographicCamera(w, h); 

третий параметр, который вы дали угол алмаз, который будет вызывать проблемы для вас

Проверьте Javadoc по этой ссылке http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/OrthographicCamera.html#OrthographicCamera(float, float, float)

+1

Хорошо, теперь намного лучше! Спасибо! Я также читал, что я не могу просто добавить новые тела на лету, эта операция должна быть выполнена только перед тем, как наступить на мир: добавьте тело -> шаг в мир. Вы подтверждаете? –

+0

Да, вы можете добавлять тела до или после похода в мир. вы не можете добавлять тела во время шага, это даст вам собственную ошибку. –