我使用的是libgdx版本0.9.9 这是我的代码,用于检测是否触摸了特定的屏幕区域:
if (Gdx.input.isTouched()) {
Vector2 touchPos = new Vector2();
touchPos.set(Gdx.input.getX(),Gdx.input.getY());
if (playRect.contains(touchPos)) {
game.setScreen(new GameScreen(game));
dispose();
}
}
现在playRect就是这个
playRect = new Rectangle();
playRect.x = 400 - playImage.getWidth() / 2;
playRect.y = 240 - playImage.getHeight() / 2;
playRect.width = 128;
playRect.height = 64;
playImage的尺寸为128 * 64.我的问题是触摸没有被检测到它应该在哪里但略微错位。
答案 0 :(得分:0)
你的代码看起来不错,但是有些按钮会改变它的位置吗? 我认为问题出在你的游戏矩形上。 请尝试输出矩形和触摸位置并告诉我你得到了什么。
if (Gdx.input.isTouched()) {
Vector2 touchPos = new Vector2();
touchPos.set(Gdx.input.getX(),Gdx.input.getY());
System.out.println(Gdx.input.getX()+" "+Gdx.input.getY()+" "+playRect.toString());
if (playRect.contains(touchPos)) {
game.setScreen(new GameScreen(game));
dispose();
}
}
答案 1 :(得分:0)
可能问题是,使用getY(),你得到Y坐标,y = 0位于屏幕顶部,而摄像头底部的y = 0,你需要反转y坐标
touchPos.set(Gdx.input.getX(),Gdx.graphics.getHeight()-Gdx.input.getY());