具有多个倾斜集的 Libgdx AtlasTmxMapLoader

标签 libgdx tiled texturepacker

我正在开发加载 Tiled map 的 Libgdx 游戏。我正在处理的当前 map 使用了 2 个图 block 集,一个用于阴影/光线,另一个用于地形和建筑物。我所做的一般过程一直运行良好,是我从艺术家那里收到 Sprite 表,设计 map ,然后获取 Sprite 表文件并使用 ImageMagick 将其拆分。从那里我获取拆分图像并使用 TexturePacker 创建优化的 png 和图集文件。

然而,这是我制作的第一张使用多个图 block 集的 map 。我遇到的问题是在使用 AtlasTmxMapLoader 加载 map 时,它依赖于 map 中的单个 map 集文件属性。我的阴影和光照被分割成一个单独的图像和图集,我宁愿不在 Tiled 中将它们全部合并为一个(并且必须重新制作 map 的一部分)。

也许我遗漏了一些简单的东西。如何处理多个图 block 集?

最佳答案

因此,在详细了解如何读取 .tmx 文件后,我能够解决我的问题。

以下是在使用多个图 block 集并在 TexturePacker 中重新打包 spritesheet 时如何正确执行此操作。首先,使用像 ImageMagick 这样的实用程序切割 tileset 图像并确保它们被索引(由文件名中的下划线和数字指定)。您可以像这样使用 ImageMagick 中的裁剪命令执行此操作:

convert.exe "shrine_tileset.png"-crop 16x16 "shrine_tileset_%02d.png"

其次,将所有图 block 集中的所有图 block 重新打包到 TexturePacker 中的单个图集中。如果它工作正常,您将在图集文件中看到每个 tileset 的名称以及基于 tile id 的关联索引。例如:

 shrine_tileset
  rotate: false
  xy: 382, 122
  size: 16, 16
  orig: 16, 16
  offset: 0, 0
  index: 703

最后(这是我无法弄清楚的部分),确保每个 tileset 的 tile 索引从 .tmx 文件中的“firstgid”值开始。例如,我的第二张图 block 从 2049 开始,因为它们在第一张图 block 中有 2048 个图 block 。这应该在每个 tileset 的 .tmx 文件的顶部指出。

<tileset firstgid="2049" source="shadow_light.tsx"/> 

因此,当为我的图 block 集“shadow_light”切割图 block 时,我将从索引 2048 开始,比 gid 小 1,例如:“shadow_light_2048.png”。

希望这对某人有帮助!

关于具有多个倾斜集的 Libgdx AtlasTmxMapLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35111311/

相关文章:

java - 使用 BitmapFont 绘制字符串

java - libgdx 剪切图像

ios - 在 Sprite Kit 中创建赛道

ios - 加载 iPhone5 图像的 CCZ 压缩文件时出错

algorithm - 将元素装入框

cocos2d-iphone - Assets 目录可以消除 Sprite 表中 iOS 设备资源扩展的需要吗?

java - 从 Libgdx Activity 转移到 Android Activity

java - 如何实现等距图 block 的逻辑渲染顺序?

java - 为什么我的玩家会从平铺 map 中掉下来?

c++ - 逐 block 移动