2016-10-02 4 views
0

私は現在、小惑星を避けなければならないゲームを開発中です。ゲームをすべてのデバイスで同じに見せるために、私はFitViewportを使用します。残念ながら、私は何とか白いバーを黒いものの代わりに、上のものと下のものに分けています。私のゲームの背景も白ですので少し奇妙に見えます。フィットビューポート黒い棒

GameScreen:

 @Override 
    public void create() 
    { 
     float aspectRatio = (float)Gdx.graphics.getWidth()/(float)Gdx.graphics.getHeight(); 
     cam = new OrthographicCamera(); 
     viewport = new FitViewport(MyGdxGame.WIDTH * aspectRatio, MyGdxGame.HEIGHT, cam); 
     [...] 
    } 


    @Override 
    public void render(SpriteBatch batch) 
    { 
     cam.update(); 
     batch.setProjectionMatrix(cam.combined); 
     batch.begin(); 
     em.render(batch); //render Ship and Asteroids 
     [...] 
    } 


    @Override 
    public void resize(int width, int height) 
    { 
     viewport.update(width, height); 
     cam.position.set(MyGdxGame.WIDTH/2, MyGdxGame.HEIGHT /2, 0); 
    } 

enter image description here

私は白いバーに船をドラッグ。

+0

試してみてください。 'Gdx.gl.glClearColor(0F、0F、0F、1F)' ' Gdx.gl.glClear (GL20.GL_COLOR_BUFFER_BIT) ' – Marius

+0

残念ながら穴の背景はこれらの2本の線で黒です。私は効果を作成したい場合、バックグラウンドとして白のテクスチャを使用しなければならないと思います。 -Thanks- –

+0

http://xyproblem.info/ – eldo

答えて

1

LibGDXは、異なるアスペクト比を処理するより便利な方法としてビューポートを提供します。 MyGdxGame.WIDTHにaspectRatioを掛ける必要はありません。 MyGdxGame.WIDTHとMyGdxGame.HEIGHTで初期化するだけです。

また、リサイズ機能では、あなたが(代わりに定数を使用しての)ビューポートの値を使用して、カム位置を変更することができます。

cam.position.set(cam.viewportWidth/2, cam.viewportHeight/2, 0); 
0

私はあなたのコード内でいくつかの問題を発見しました。ベストプラクティスのためには、異なる画面比率で処理するだけでfill portPortを試してみてください。ここでは、塗りつぶしビューポートでコードを編集するだけです。一度試してみてください。あなたがまだの場合は、 `)(` cam.update前に、これらの行を追加し

  @Override 
     public void create() 
     { 
      float aspectRatio = (float)Gdx.graphics.getWidth()/(float)Gdx.graphics.getHeight(); 


      camera = new OrthographicCamera(); 
      camera.position.set(0, 0, 0); 
      camera.update(); 
      //1280 is the screen width and 800 is screen height 
      camera.setToOrtho(false, 1280, 800); 
      viewPort = new FillViewport(1280, 800, camera); 

     } 


     @Override 
     public void render(SpriteBatch batch) 
     { 

      batch.setProjectionMatrix(camera.combined); 
      batch.begin(); 
      em.render(batch); //render Ship and Asteroids 
      [...] 
     } 


     @Override 
     public void resize(int width, int height) 
     { 
      viewPort.update(width, height); 
     } 

just try with the above code . it will definitely work