我试图在点击时将精灵移动到鼠标位置。
但是,我从Gdx.input.getX()
和Gdx.input.getY()
得到的坐标是相对于左上角,setPosition()
方法是Sprite
}相对于左下角。
为什么会如此,如何将我的精灵定位在鼠标点击的位置?
答案 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相机。