有一个奇怪的问题。
我有一个带有四个精灵动画帧的纹理。每个帧都作为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");