如何在al设备中使用相同的分辨率获取LibGdx中的触摸坐标?

Dan*_*eno 0 java android libgdx

所以我使用这段代码来获取屏幕上的触摸坐标.

 if(Gdx.input.justTouched()){
            System.out.println("X= "+Gdx.input.getX()+"Y= "+Gdx.input.getY());
        }
Run Code Online (Sandbox Code Playgroud)

但如果我有一台1280x960分辨率的设备,我有800x600的正交相机.

我该怎么做才能获得相机内部的坐标而不是设备触摸坐标

"例如,如果我在x轴上触摸屏幕的极限,我想获得800而不是1280"

Phi*_*son 7

正确的方法是使用相机从屏幕坐标给你世界坐标.

例如...

    Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY());
    camera.unproject(mousePos); // mousePos is now in world coordinates
Run Code Online (Sandbox Code Playgroud)

这样,如果您更换相机(缩放/旋转/其他),那么一切仍然有效.

如果您正在使用视口,那么您应该使用vieport的unproject方法,因为它可能有其他问题需要处理(例如,允许在FitViewport中使用letterboxing).

注 - 在我给出的示例中,重用单个Vector3实例会更好,但我希望示例尽可能简单.