2017-05-28 14 views
0

私はちょっと混乱します。私はlibgdxを初めて使用しており、私は座標系にいくつか問題があります。私はテクスチャを作成し、位置を設定したいんだときに、私が行いますlibgdx:テクスチャを使うときの他の座標系

texture = new Texture("myGraphic.png", 0, 0); 

と私の写真は、左下隅に配置されます。

しかし、私は、タッチ位置を取得しようとすると:

if(Gdx.input.isTouched()) 
    { 
     Vector3 tmp = new Vector3(Gdx.input.getX(),Gdx.input.getY(),0); 
     System.out.println("Coord:" + " + " + tmp.x + " + " + tmp.y); 
    } 

私は(0,0)が左上隅にあることを認識しました。 私は出力前にcamera.unproject(tmp)を試しましたが、-1と1の間の値しか得られません。 どのようにすべての要素に対して同じ座標系を取得できますか?

+0

あなたのカメラの使い方を教えてください。 – Aryan

答えて

0

タッチのLibgdx座標系ではy-downですが、画面または画像の場合はy-upです。

camera.setToOrtho(false);により、y軸が上向き設定のカメラを使用してcamera.unproject(vector3);方法で世界のポイントを得ることができる場合LibGDX Coordinate systems

のを見てみましょう。

public class TouchSystem extends ApplicationAdapter { 

    SpriteBatch batch; 
    Texture texture; 
    Vector3 vector3; 
    OrthographicCamera camera; 

    @Override 
    public void create() { 

     batch=new SpriteBatch(); 
     texture=new Texture("badlogic.jpg"); 
     vector3=new Vector3(); 
     camera=new OrthographicCamera(); 
     camera.setToOrtho(false); // this will set screen resolution as viewport 
    } 

    @Override 
    public void render() { 

     Gdx.gl.glClearColor(0,0,0,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     batch.begin(); 
     batch.draw(texture,0,0); 
     batch.end(); 

     if(Gdx.input.justTouched()) { 

      vector3.set(Gdx.input.getX(),Gdx.input.getY(),0); 
      camera.unproject(vector3); 
      System.out.println("Coord:" + " + " + vector3.x + " + " + vector3.y); 
     } 
    } 

    @Override 
    public void dispose() { 
     texture.dispose(); 
     batch.dispose(); 
    } 
} 
+0

それは動作します!どうもありがとうございました。もう一つの短い質問:MainGameクラスから同じカメラを使用する必要がありますか、別のクラス(新しいスクリーンなど)で新しいカメラを作成できますか? –

+0

カメラは重量物ではありませんので、別のカメラを別の画面に作成することができます。 – Aryan