调整libGDX大小后触摸位置不正确

时间:2014-08-09 19:35:05

标签: java android libgdx

我想在屏幕上使用一个按钮。但是,当我调整桌面窗口的大小时,触摸坐标会自行搞定。我不知道如何解决这个问题。

首先,我正在使用

cam = new PerspectiveCamera();
viewport = new FitViewport(screenWidth, screenHeight, cam);

并致电

viewport.update(width, height, true);

在我的调整大小方法中,以便我的屏幕看起来总是与其原始大小成比例缩放。

我的输入

Gdx.input.setInputProcessor(new InputHandler((float) scaleX, (float) scaleY, world));

现在,在调整窗口大小后,图像位于正确的位置,但触摸坐标不是。这有点难以解释,但我会尽我所能。规模正常。但是,由于我正在使用Fitviewport,当我调用Gdx.graphics.getHeights()或.getWidth()时,它会获得整个屏幕的高度和宽度(包括仅增加一侧时的黑色区域)。因此,这使我的输入比例与整个屏幕成比例。虽然图像是通过Fitviewport进行说明的,并且与其原始大小成比例地调整大小。这使得我的输入位置与按钮绘制的图像相比,按钮响应距离或向右或向上或向下太远。 我也试过了cam.unproject。我该如何解决这个问题?

我提供了一些日志,希望它能帮助您更好地了解我的情况。

---没有调整大小(原创)---

调整大小称为 调整大小x:480 y:800
比例x:1.0 y:1.0

(按钮原来的坐标和按钮响应输入的位置)
在缩放X之前:398 Y:75
缩放X后:398 Y:75
Gdx输入X:398 Y:75
cam unproject X:240.26144 Y:400.53613

---调整大小后---

调整大小称为 调整大小x:807 y:743
比例x:1.68125 y:0.92875

-where按钮出现在屏幕上 -

在缩放X之前:542 Y:38
缩放X后:322 Y:40
Gdx输入X:542 Y:38
cam unproject X:240.13632 Y:400.5924

-touch坐标,按钮响应 -

在缩放X之前:677 Y:36
缩放X后:402 Y:38
Gdx输入X:677 Y:36
cam unproject X:240.2692 Y:400.59595

谢谢!

2 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的方法。 问题是我不知道浮动分裂。

link。我需要划分float / int。这个浮动部门解释得很好

thx所有的帮助

答案 1 :(得分:0)

我有一个非常相似的问题。 在我的touchDown方法中,我翻译了世界坐标:

Vector3 testPoint3 = new Vector3();
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    testPoint3.set(screenX, screenY, 0);
    camera.unproject(testPoint3);
    testPoint.set(testPoint3.x * GameWorld.BOX_TO_WORLD, testPoint3.y * GameWorld.BOX_TO_WORLD);
    //And then check the Fixture
    if(myFixture.testPoint(testPoint.x, testPoint.y)) {
        System.out,println("hit");
    }
}

但正如你所说,相机的宽度和高度是整个屏幕的宽度和高度。因此,您需要使用Viewport取消项目。 viewport.unproject(testPoint3)

GameWorld.BOX_TO_WORLD在我的情况下是0.01f,因为我选择1米= 100px。