纹理包装动画图像/精灵表有效-Libgdx

Posted

技术标签:

【中文标题】纹理包装动画图像/精灵表有效-Libgdx【英文标题】:Texture packing animation images/Sprite sheets efficiently-Libgdx 【发布时间】:2017-06-05 05:01:18 【问题描述】:

对于我的 LibGdx 项目,我拥有包括单个图像和动画精灵表在内的资产。我知道将所有内容打包到单个图集中是有效的。

但是当涉及到精灵表时,我该如何打包?打包时我必须使用单个精灵表还是单个精灵表的图像? 例如:我有一个名为“snake”的精灵表,有 4 帧。 我在snake_01、snake_02、snake_03 和snake_04 中也有蛇形框架。

哪种方法更好?

【问题讨论】:

【参考方案1】:

第二种方式管理起来花费的时间要少得多。所以对每一帧动画使用单独的文件,比如snake_01.png、snake_02.png等。

LibGDX TexturePacker 会自动将所有这些区域命名为“snake”并给它们一个索引号。

然后,加载 TextureAtlas 后,您可以拉出整个动画:

Array<TextureAtlas.AtlasRegion> snakeRegions = textureAtlas.findRegions("snake");
Animation<TextureRegion> snakeAnimation = new Animation<TextureRegion>(0.1f, snakeRegions);

如果您使用的 LibGDX 版本早于 1.9.5,请省略 &lt;TextureRegion&gt;(两次)。 Animation 类在 1.9.5 版本中成为通用类。

【讨论】:

谢谢!还有一件事,当我使用 findRegion() 获取特定图像的区域时,我可以在渲染后看到图集中附近图像的部分。它是如何发生的? 如果精灵被绘制成小于屏幕尺寸的 1x1 到原始尺寸,并且您没有使用最近过滤,线性过滤将导致图集上的附近像素渗入 Sprite。增加纹理打包器设置中的填充以解决此问题。

以上是关于纹理包装动画图像/精灵表有效-Libgdx的主要内容,如果未能解决你的问题,请参考以下文章

用于渲染精灵的纹理采样坐标

如何根据屏幕分辨率缩放 libgdx 中的精灵?

LibGDX fbx 导出不显示图像纹理 - 显示为黑色

如何使用纹理包调整精灵的位置

如何使用libGDX更改Scene2D图像中的纹理?

LibGDX FrameBuffer 混合