1

我使用这种方法在 libgdx 中旋转了一个图像,

SpriteBatch.draw(TextureRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation)

但我不知道如何获得旋转图像的坐标。

4

3 回答 3

2

Sprite您可以使用一个(或您自己的跟踪其当前位置的对象),而不是在绘制时旋转纹理。

draw调用不存储任何旋转结果,它只是在复制到屏幕时旋转纹理。该类Sprite将跟踪位置和旋转,以便您可以查询它。(你应该使用Sprite'draw方法来绘制它。)

Sprite还将为您提供一个轴对齐的边界框。如果您想要纹理旋转角的精确位置,则需要getVerticies()从位置和旋转中提取或自行计算。

于 2013-04-23T16:10:08.900 回答
1

我不明白这个问题。我读了几次,但我什至没有得到你想知道的核心。如果您使用 spriteBatch.draw() 绘制图像,则绘制的图像将放置在第二个和第三个参数的坐标上,并围绕相对原点进行旋转/缩放。

如果您想知道图像在屏幕上绘制的位置,您应该考虑使用 camera.project(Vector3); 使用 3 维向量,其中 x,y 是图像的坐标,z = 0;向量将乘以相机的矩阵,因此 x,y 将成为屏幕坐标。

于 2013-04-23T13:11:58.353 回答
1

或者更好的是,您应该在绘制之前旋转图像。如果你这样做,你可以随时从你的精灵/图像对象获得旋转。

于 2013-04-23T13:15:28.347 回答