使用鼠标坐标进行精灵定位

时间:2014-08-31 19:37:15

标签: libgdx

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

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

为什么会如此,如何将我的精灵定位在鼠标点击的位置?

1 个答案:

答案 0 :(得分:2)

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

如果您更喜欢Y-down参照系,可以使用camera.setToOrtho(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相机。