我目前正在为我的游戏编辑菜单屏幕。我试图创建一个矩形,检查是否触摸了Sprite按钮。我正在使用Abitrary World Coordinates 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);
}
我正在使用一种特殊的正交相机,如果你想看到两个相关的类klick here。 (不是我的项目)
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")
}
}
}
槽测试我认识到,矩形坐标系的原点位于中心,宽度和高度设置得很高。在这里你可以看到一个区域的图片,通过点击我打印出“矩形”。 Normaly矩形的起源应该在左下角,对吗?
答案 0 :(得分:0)
我强烈建议您使用例如Scene2d。它可以轻松为您的应用程序创建用户界面。
有了这个,您可以使用ImageButton并附加ClickListener
,以便在点击按钮时获得回调。
答案 1 :(得分:0)
要解决非居中坐标系的问题,您必须将摄像机设置到正确的位置。
您可以使用以下代码执行此操作:
camera.setOrtho(false);
camera.position.set(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
camera.update();