我正在尝试从 textureRegion 创建动画。区域存储在由LibGdx Texture Packer创建的atlas文件中。我现在感兴趣的地区是:
mygame/myregion
rotate: true
xy: 2, 544
size: 2574, 279
orig: 2574, 279
offset: 0, 0
index: -1
请注意旋转true 属性。我按照此处的文档中的示例进行操作:https://github.com/libgdx/libgdx/wiki/2D-Animation
该区域由4帧组成[它是由4帧而非单独图像组成的单个png图像],后来使用拆分方法进行分割:
int framesCount = 4;
myRegion = skin.getRegion("mygame/myregion"),
int frameWidth = (int) Math.floor(myRegion.getRegionWidth() / (float) framesCount);
int frameHeight = myRegion.getRegionHeight();
TextureRegion[][] tmp = myRegion.split(frameWidth, frameHeight);
System.arraycopy(tmp[0], 0, animationFrames, 0, framesCount);
当纹理区域未旋转时,分割效果很好但在这种情况下它从未正常工作。在这种情况下,regionHeight> regionWidth。
通过检查纹理的高度/宽度或AtlasRegion旋转属性,我可以找到纹理是否旋转。
有没有一种方法可以在分割之前旋转区域,所以在分割之前它将如下所示:
或许有更好的方法可以从皮肤中获取区域,所以当纹理区域被TexturePacker旋转时,所有区域仍然可以正常工作?
还发现了这个相关问题:Libgx Rotate a Texture Region但没有帮助。
作为解决方法,我在生成包时禁用了旋转,以避免出现问题。