【问题标题】:Something wrong with Groups.rotation?Groups.rotation 有问题吗?
【发布时间】:2012-01-25 04:14:45
【问题描述】:

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

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

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

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

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

纹理的最终位置将是

(x+originX); (y+originY)

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    无法真正重现您的群组移动。但请注意,除了每个图像本身旋转外,还有 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) 缩放和旋转。

    【讨论】:

      【解决方案2】:

      这些都是正确的:

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

      这不是:

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

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

      纹理的最终位置将是

      (x+originX); (y+originY)

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

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

      【讨论】:

        猜你喜欢
        • 2018-09-14
        • 2012-03-03
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        相关资源
        最近更新 更多