Libgdx旋转纹理区域

时间:2013-06-10 11:45:35

标签: android libgdx

我想知道如何在Libgdx中旋转textureRegion。

如果Pixmap有一个isue,你也可以把它给我。

我不想使用精灵,因为它不适合我想做的事情。

谢谢你。

2 个答案:

答案 0 :(得分:3)

将textureRegion旋转90°的倍数实际上非常简单。

textureRegion是较大纹理的一部分,由两对UV坐标定义。 为了旋转textureRegion,你必须旋转这些UV坐标。

例如,这是原始的textureRegion:Original region

(我们假设你的区域是一个正方形,但它也适用于矩形) 要顺时针旋转90,您只需要交换坐标:

u1 = u1
v1 = v2
u2 = u2
v2 = v1

这将导致:

Rotated region

您可以使用变换矩阵(旋转,平移,缩放)来推广此解决方案,但是对于90°多次旋转,您只需要交换坐标。

编辑:This page包含您需要知道的更改textureRegion的UV坐标

答案 1 :(得分:0)

以一定角度旋转,在原点上标记θ(符号@)

let(x,y)是旧值和

(xn,yn)是新值

顺时针

xn = x * cos(@)+ y * sin(@)

炔= Y * SIN(@) - X * COS(@)

逆时针

xn = x * cos(@)+ y * sin(@)

炔= Y * SIN(@) - X * COS(@)

一点参考这个图有所帮助 How to rotate a vertex around a certain point?

例如一个矩形只计算2个顶点位置(x1,y1)和(x2,y2)

然后绘制如下 宽度= X2-X1; 高度= Y2-Y1;

g.drawRectangle(X,Y,宽度,唤起注意);

自从我修改了C.G.以来已经有一段时间了。注意,但我猜上面会做的伎俩

如果在这里使用libgdx是简单的解决方案: Spritebatch.draw(区域,0,0,128,128,256,256,1,1,90); 最后一个参数是旋转角度