2016-09-09 9 views
1

現在、自分のゲームのメニュー画面でプログラミング中です。 SpriteボタンがタッチされたかどうかをチェックするRectangleを作成しようとしています。 uは、関連するクラスの両方がhereをklick見たい場合はAbitrary世界座標public static int WIDTH = 1080 , HEIGHT = 720;メニューボタンをスプライトで作成する

public void create() { 

    cam = new OrthoCamera(); 
    cam.resize(); 

    texture = new Texture("Button.png"); 

    texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 
    TextureRegion region = new TextureRegion(texture, 59, 52, 300,250); 

    sprite = new Sprite(region); 
    sprite.setSize(sprite.getWidth() , sprite.getHeight() ) 
    sprite.setPosition(MyGdxGame.WIDTH/2, MyGdxGame.HEIGHT/2); 

} 

を使用してイムは、私は、特別な正射カメラを使用しています。私は長方形の何とか原点は座標系のことをregognized

public void update(OrthoCamera cam) { 

    if(Gdx.input.isTouched()) 
    { 

     Vector3 tmp = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); 
     cam.unproject(tmp); 

     Rectangle textureBounds = new Rectangle(0,0, 300, 250); //origin at center ?! 



     if(textureBounds.contains(tmp.x,tmp.y)) 
      { 

      //ScreenManager.setScreen(new GameScreen()); 
      System.out.println("Rectangle")   
      } 
    } 

    } 

トラフのテストセンターにあり、幅と高さがはるかに高く設定されて(私のプロジェクトわけではありません)。ここでは、クリックしてプリントアウトする「矩形」の領域の画像を見ることができます。通常、Rectangleの原点は左下にありますか?

enter image description here

+0

こと。 :)それはスーパークラスから複製されたパラメータを持っていて、不必要にオーバーライドされたメソッドの中でそれらをスーパークラスとミックスして一致させます。そのVirtualViewportクラスもかなり複雑に見えます。あなたの問題はおそらく、スーパークラスのメソッドを注意深く実装していないオーバーライドされたクラスと関係があるでしょう。そのVirtualViewportクラスもかなり畳み込まれています。代わりに、組み込みのLibgdx ExtendViewportクラスをプレーンなOrthographicCameraで使用する必要があります。 – Tenfour04

答えて

0

私は非常にあなたが例Scene2dに使用するrecommonyます。それはあなたのアプリケーションのためのユーザーインターフェイスを作成することが容易になります。

これで、ImageButtonを使用してClickListenerを添付して、ボタンをクリックしたときにコールバックを取得できます。

+0

-thanks-私はそれについて考えるつもりですが、それは私の座標問題を解決しません。 –

0

センタリングされていない座標系の問題を解決するには、カメラを正しい位置に設定する必要があります。

は、次のコードを使用してこれを行うことができます。OrthoCameraクラスは醜態である

camera.setOrtho(false); 
camera.position.set(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2); 
camera.update(); 
関連する問題