libGDX纹理打包器旋转

4

我正在使用TexturePackerPro程序将精灵打包成.pack文件,并在libGDX中使用它。 对于一些精灵,存在rotate: true标志,但是当我在libgdx中读取精灵时,精灵没有被旋转。

  rotate: true
  xy: 425, 1066
  size: 59, 96
  orig: 59, 96
  offset: 0, 0
  index: -1 

为什么当旋转标记设置为true时,精灵本身没有旋转?如果我必须手动绘制旋转,那么为什么还有旋转标记?
谢谢。
2个回答

4

精灵没有旋转是因为libgdx将您的纹理区域旋转回其原始旋转。

为什么?旋转标志只是告诉打包文件中的纹理如何定位,而不是在加载区域后您想要图像定位的方式。Libgdx假设您希望所有图像直立定位。


我应该怎么做才能正确旋转显示区域?谢谢。 - Jovan
遍历您的TextureAtlas中的所有AtlasRegion。如果一个AtlasRegion的旋转属性为true,则将该区域顺时针旋转90度,并交换其宽度和高度。这应该适用于您。您可以尝试在打包文件中删除旋转行,但这样做需要每次都进行操作。 - William Morrison
1
你如何将区域顺时针旋转90度?似乎没有相应的方法可以实现这个功能。 - Nii Laryea
您需要在运行时创建一个新的纹理。每当OpenGL上下文丢失时,就需要重新创建此纹理(可能会很慢)。 - William Morrison
如果您失去了OpenGL上下文,重新加载纹理的时间非常短暂,因为它很可能是由于“用户世界”中断造成的,这可能需要几秒钟甚至几分钟。重新启动需要几毫秒,不会有太大影响。 - RichieHH
显示剩余4条评论

-1
你必须使用 SpriteAtlasSprite 来获取旋转属性。 TextureRegionAtlasRegion 不考虑旋转。 如果你要将它转换为 Drawable,请使用 SpriteDrawable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接