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とは違うようです。ここで何か間違っていると誰かが私を指摘できますか?