3

我在 gdx-test 中运行了 StageTest.java 示例,这个视频是我单击旋转时的结果。

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

  • 原点是相对于位置的
  • 精灵围绕这个原点旋转和缩放
  • 原点本身不会以任何方式缩放或旋转

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

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

纹理的最终位置将是

(x+originX); (y+originY)
4

2 回答 2

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)

于 2012-02-04T20:31:23.787 回答
0

这些都是正确的:

  • 原点是相对于位置的
  • 精灵围绕这个原点旋转和缩放
  • 原点本身不会以任何方式缩放或旋转

这不是:

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

batch.draw(纹理,x,y,originX,originY .....);

纹理的最终位置将是

(x+原点X); (y+originY)

这个接收原点的绘制方法所做的是将它用于缩放和旋转(这就是为什么这个方法也接收缩放和旋转)。如果您希望它以原点为中心旋转,则可以这样做:

batch.draw(region, x, y, width/2F, height/2F, width, height, 1, 1, rotation);
于 2014-01-10T09:09:26.747 回答