2

Box2D は初めてです。簡単なチュートリアルに従おうとしていますが、コード内に統合しようとしています:

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);
   [. . .]
 }

Game Screen (Screen クラスを拡張する) 内には、render メソッドがあります。

 @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();
 }

最後に、Timer が定期的に新しいオブジェクトを作成します。これらのオブジェクトのコンストラクター内で、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();

}

プログラムを起動すると、黒い画面が表示されます。誰が問題がどこにあるか知っていますか?

ありがとうございました

4

1 に答える 1

0

カメラを次のように初期化します

camera = new OrthographicCamera(w, h);

あなたが与えた3番目のパラメータは、問題を引き起こしているダイヤモンドの角度です

このリンクの Javadoc を確認してください http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/OrthographicCamera.html#OrthographicCamera(float , float, float)

于 2013-07-10T06:43:37.050 に答える