Groups.rotation出了什么问题?

时间:2012-01-25 04:14:46

标签: android libgdx

我在gdx-test中运行了StageTest.java示例,当我点击旋转时,this video是结果。

它不仅可以旋转组并移动它,这是一个错误吗? 还有一个问题来源于libgdx,libgdx的起源是什么?在我看来它喜欢枢轴,对吗?这意味着

  • 原点是相对于位置
  • 精灵旋转并围绕此原点缩放
  • 原点本身未以任何方式缩放或旋转

但是有时我看到原点会移动纹理,例如:

batch.draw(texture,x,y,originX,originY ..... );

纹理的最终位置将是

(x+originX); (y+originY)

2 个答案:

答案 0 :(得分:0)

无法真实再现群组的动作。但请注意,除了每个图像本身旋转外,还有5组旋转。注释掉以下部分:

    for (int i = 0; i < len; i++)
        if (rotateSprites)
            stage.getGroups().get(i).rotation += Gdx.graphics.getDeltaTime();
        else
            stage.getGroups().get(i).rotation = 0;

这将禁用组旋转。也许这给了一些见解。从你的视频中我看到你的图像似乎围绕着它们的右上角旋转,也许这也是欺骗。但一般来说,图像和组将围绕其原点旋转(如枢轴)。

在上面的draw(...)方法中,纹理最初将放置在(x, y)的给定(width, height),然后缩放并围绕(originX, originY)旋转。

答案 1 :(得分:0)

所有这些都是正确的:

  • 原点是相对于位置
  • 精灵旋转并围绕此原点缩放
  • 原点本身未以任何方式缩放或旋转

这不是:

  

但是有时我看到原点会移动纹理,例如:

     

batch.draw(texture,x,y,originX,originY .....);

     

纹理的最终位置将是

     

(X + originX); (Y + originY)

接收原点的this draw方法是使用它来进行缩放和旋转(这就是为什么这个方法也接收缩放和旋转)。如果你希望它以原点位于其中心进行旋转,这就可以解决问题:

batch.draw(region, x, y, width/2F, height/2F, width, height, 1, 1, rotation);