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

Mouse coordinates offset compensation issue for sprite under pointer on left-clicking

我正在尝试让一个精灵移动到我的鼠标坐标,我很幸运,虽然有限。我有以下代码使精灵移动,但它仍然没有移动到我点击的位置,只是相对于它。似乎我在网上找到的代码偏移了鼠标的 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);
};

鼠标输入的坐标是相对于屏幕左上角的。所以你必须根据相机位置和他的原点来计算鼠标在世界中的位置。

您可以手动执行此操作,或者我在此处找到 site:

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

之所以在代码中使用 Gdx.graphics.getHeight() - Gdx.input.getY() - sprite.getHeight()/2 作为 y 位置,是因为世界 Y 正在长大,而鼠标 Y 正在向下生长。