Java libGDX X和Y鼠标输入

Java libGDX X和Y鼠标输入,java,libgdx,textures,sprite,mouseclick-event,Java,Libgdx,Textures,Sprite,Mouseclick Event,我有一个libGDX代码,我不明白为什么它不工作。 我的想法如下:我创建了一个带有纹理的精灵,如果我点击这个精灵,就会发生一些事情。到目前为止还不错 我在位置上使用以下代码创建精灵: X=0.1f; Y=0.5f 这个很好用 Sprite spr = new Sprite(texture); // Define sprite size to be 1m x 1m in game world spr.setSize(1, 1);

我有一个libGDX代码,我不明白为什么它不工作。 我的想法如下:我创建了一个带有纹理的精灵,如果我点击这个精灵,就会发生一些事情。到目前为止还不错

我在位置上使用以下代码创建精灵:
X=0.1f; Y=0.5f

这个很好用

            Sprite spr = new Sprite(texture);

        // Define sprite size to be 1m x 1m in game world
        spr.setSize(1, 1);

        // Set origin to sprite's center
        spr.setOrigin(spr.getWidth() / 2.0f, spr.getHeight() / 2.0f);

        // Calculate random position for sprite
        float randomX = 0.1f;
        float randomY = 0.5f;
        spr.setPosition(randomX, randomY);

        // Put new sprite into array
        testSprites[i] = spr;
现在我确实想在单击鼠标时获得鼠标的X和Y位置。 但当我用Systemout进行试验时,我得到了以下坐标: X输入:748 X精灵位置:0.1

精灵的位置是正确的,但是X输入(Gdx.Input.getX)也应该在0.1左右,但是远远不够。有什么我不考虑的吗?
        if (Gdx.input.isButtonPressed(Buttons.LEFT))
        System.out.println("X Input: "+ Gdx.input.getX());
        System.out.println("X Sprite Position: "+testSprites[1].getX());
看一看。您正在将触摸/鼠标坐标(像素)与世界坐标(例如米)进行比较,而不进行转换。您可以使用
相机
视口
取消投影
方法将输入坐标转换为世界坐标。您没有提供足够的信息来查看正在使用的相机,但是假设您使用的是
相机
,则可以执行以下操作

Vector3 mousePos = new Vector3();
camera.unproject(mousePos.set(Gdx.input.getX(), Gdx.input.getY(), 0));
System.out.println("X Input: "+ mousePos.x);
当然,您不应该在频繁调用的代码中使用
new
关键字,因此最好将
mousePos
变量移动到类成员中。

请查看。您正在将触摸/鼠标坐标(像素)与世界坐标(例如米)进行比较,而不进行转换。您可以使用
相机
视口
取消投影
方法将输入坐标转换为世界坐标。您没有提供足够的信息来查看正在使用的相机,但是假设您使用的是
相机
,则可以执行以下操作

Vector3 mousePos = new Vector3();
camera.unproject(mousePos.set(Gdx.input.getX(), Gdx.input.getY(), 0));
System.out.println("X Input: "+ mousePos.x);

当然,您不应该在频繁调用的代码中使用
new
关键字,因此最好将
mousePos
变量移动到类成员。

从鼠标获得的位置是屏幕坐标。您需要将它们投影(或者更确切地说,取消投影)到世界坐标。由于您使用的是
正交摄影机
,因此这是一个简单的修复方法

Vector3 mouse = new Vector3(Gdx.input.getX, Gdx.input.getY, 0);
camera.unproject(mouse);

System.out.println(mouse);

从鼠标获得的位置是屏幕坐标。您需要将它们投影(或者更确切地说,取消投影)到世界坐标。由于您使用的是
正交摄影机
,因此这是一个简单的修复方法

Vector3 mouse = new Vector3(Gdx.input.getX, Gdx.input.getY, 0);
camera.unproject(mouse);

System.out.println(mouse);

您应该使用InputProcessor,而不是按下IsButton。显示渲染方法。您是否将屏幕坐标投影到世界坐标?您应该使用InputProcessor而不是按下IsButton。显示渲染方法。你把屏幕坐标投影到世界坐标了吗?