有一个奇怪的问题。

我有一个带有四个精灵动画帧的纹理。每个帧都作为TextureRegion加载。

大多数情况下,Animation播放时没有任何问题,但有时会在一帧中绘制过多的Texture。

这是我的意思的示例:



如您所见,UFO的左侧有一个红色条。该红色条是我的代码中所述的TextureRegion边界外部框架的一部分。 (红色框只是为了方便我进行测量,因为所有角落都透明)

这是纹理:



在上面的Sprite工作表中,顶部幻灯片的红色框的边界为0、0、202、71。动画帧的TextureRegion为1、1、200、69-在任何情况下,据我所知,将显示红色框。

我意识到,作为一种解决方法,我现在可以将框架设置为透明,因为我已经有了所需的测量值,但是我想保留红色框架,以防以后需要再次进行测量或替换精灵图像等。 ,实际上,解决方法只是个创可贴,而我希望找到一个适当的解决方案来解决问题的根源-它出了错的事实似乎表明比这个情况下存在的问题更大(例如,在密集包装的Texture中,它可能从不同的Sprite框架甚至是不同的Sprite或菜单图像等中绘制像素)。

哦,还有最后一点,如果有帮助的话:SpriteBatch显示图像时,它会根据UFO的移动(例如,向左移动时向左倾斜)而应用旋转。有时会在顶部,右侧,底部或左侧随机出现小故障红色条(尽管大多数情况下它们根本不显示),但是似乎只有在UFO旋转为零时才会显示。 (再次,我意识到我可以只检查一下旋转是否为0,然后在没有旋转图的情况下调用SpriteBatch.draw()方法,但这也将处理症状而不是解决问题的根源)。

有学问的大师有什么想法吗?

最佳答案

您的动画帧需要在其周围填充以解决舍入错误。在每个图像周围放置两个清晰像素像素。如果使用TexturePacker将图像合并到文件中,则默认情况下它将自动添加两个填充像素。

如果您用下划线帧后缀命名四个图像,例如myAnimation_0.png,myAnimation_1.png,myAnimation_2.png和myAnimation_3.png,则在加载TextureAtlas时,可以非常轻松地获得动画。

Array<TextureRegion> myAnimationFrames = textureAtlas.findRegions("myAnimation");

09-18 09:40