Libgdx 使用鼠标坐标进行Sprite定位

Libgdx 使用鼠标坐标进行Sprite定位,libgdx,Libgdx,我试图在单击时将精灵移动到鼠标位置 但是,我从Gdx.input.getX()和Gdx.input.getY()获得的坐标是相对于左上角的,而Sprite的setPosition()方法是相对于左下角的 为什么会这样?我如何定位我的精灵在鼠标被点击的位置?屏幕坐标来自Android,并使用Y向下的参考框架。默认情况下,libgdx中的相机使用Y-up参考框架(因为OpenGL按惯例也使用Y-up参考框架) 如果您喜欢Y向下的参考帧,可以使用camera.setToOrTo(true)方法将其翻转

我试图在单击时将精灵移动到鼠标位置

但是,我从
Gdx.input.getX()
Gdx.input.getY()
获得的坐标是相对于左上角的,而
Sprite
setPosition()
方法是相对于左下角的


为什么会这样?我如何定位我的精灵在鼠标被点击的位置?

屏幕坐标来自Android,并使用Y向下的参考框架。默认情况下,libgdx中的相机使用Y-up参考框架(因为OpenGL按惯例也使用Y-up参考框架)

如果您喜欢Y向下的参考帧,可以使用
camera.setToOrTo(true)方法将其翻转过来。如果你来自Flash背景,你可能更喜欢这个

但一般来说,将触摸屏坐标转换为摄像机坐标系的安全方法是执行以下操作。无论您在什么平台上,也不管您为相机选择了什么坐标系,这都会起作用。例如,对于某些类型的游戏,您甚至不会使用与屏幕分辨率匹配的相机,但您仍然希望将屏幕坐标转换为相机坐标。此外,如果您的相机在世界各地移动,这将自动将接触点更改为世界坐标

tempVector3.set(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(tempVector3);
//now tempVector3 contains the touch point in camera coordinates.
它使用Vector3,因为它也适用于3D相机