2016-08-18 9 views
2

libgdxを使って簡単なアンドロイドゲームを作成しようとしています。画面に画像があり、画像に触れているかどうかを確認する必要があります。以下は私がこれまでに書いたコードです。画面でAndroid libgdx - 画像に触れた場合にチェックする

public final static float VP_WIDTH = 480 * INV_SCALE; 
public final static float VP_HEIGHT = 800 * INV_SCALE; 

private OrthographicCamera camera; 
private ExtendViewport viewport; 
SpriteBatch batch; 
Texture texture; 
private int screenHeight, screenWidth; 
Sprite playImage; 

@Override 
public void create() { 
    batch = new SpriteBatch(); 
    screenWidth = Gdx.graphics.getWidth(); 
    screenHeight = Gdx.graphics.getHeight(); 
    camera = new OrthographicCamera(); 

    // pick a viewport that suits your thing, ExtendViewport is a good start 
    viewport = new ExtendViewport(VP_WIDTH, VP_HEIGHT, camera); 
    Gdx.input.setInputProcessor(this); 
     texture = new Texture("play.png"); 
     playImage = new Sprite(texture); 
     playImage.setSize(texture.getWidth(), texture.getHeight()); 
} 

public void render() { 

    camera.update(); 
    Gdx.gl.glClearColor(0, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    batch.setProjectionMatrix(camera.combined); 
    batch.begin(); 
    batch.draw(playImage, 240 - texture.getWidth()/2, 200 - texture 
       .getHeight()/2); 
    batch.end(); 

} 

public void dispose() { 
    batch.dispose(); 
    texture.dispose(); 
} 

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

public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
    camera.unproject(tp.set(screenX, screenY, 0)); 
    if (state.equals(States.STARTED)) { 
     if (screenX >= screenWidth/2 - texture.getWidth()/2 && screenX <= screenWidth/2 + texture 
       .getWidth()/2 && screenY <= 3 * screenHeight/4 + texture.getHeight()/2 && screenY 
       >= 3 * screenHeight/4 - texture.getHeight()/2) 
      playButtonClicked = true; 
    } 

    return true; 
} 

私は私のイメージが適切に配置見るが、私はそれをクリックしたときに、私は画像の中央部分をクリックすると、それだけでループのために行きます。

screenXとscreenYのようなものが480,800とは違うようです。ここで何か間違っていると誰かが私を指摘できますか?

答えて

2

カメラでプロジェクトを終了すると、使用していないxとyは、使用したtpベクトルに含まれます。 Javaメソッドは、渡されたパラメータの値を変更することはできません(Cのポインタで行うことができます)。

これ以外にも、コードは非常に保守不能に見えます。 1組の方程式で画像を描画し、複雑な方程式の異なるセットでタッチ境界を計算しています。その境界を1つの場所(多分Rectangleメンバ変数)に定義し、描画とヒット検出の両方に境界線を使用する必要があります。

関連する問題