鼠标坐标左键单击指针下的精灵偏移补偿问题

时间:2015-04-02 03:52:27

标签: java libgdx

我想让一个精灵移动到我的鼠标坐标,我很幸运,虽然有限。我有以下代码,使精灵正在移动,但它仍然没有移动到我点击的地方,只是相对于它。似乎我在网上找到的代码抵消了鼠标的Y位置(减去)而不是X?我想知道为什么?感谢

if(Gdx.input.isButtonPressed(Input.Buttons.LEFT)){
        sprite.setPosition(Gdx.input.getX() - sprite.getWidth()/2,
                Gdx.graphics.getHeight() - Gdx.input.getY() - sprite.getHeight()/2);
};

1 个答案:

答案 0 :(得分:1)

鼠标输入的坐标相对于屏幕的左上角。因此,您必须根据摄像机位置及其原点计算鼠标在世界中的位置。

您可以手动执行此操作,也可以在此site上找到:

    Vector3 worldCoordinates = new Vector3(x, y, 0);
    camera.unproject(worldCoordinates);

代码Gdx.graphics.getHeight() - Gdx.input.getY() - sprite.getHeight()/2用于y位置的原因是,Worlds Y正在成长,但是鼠标Y正在逐渐减少。