在cocos2d中使用Tile Maps - 如何处理大量图像?

时间:2014-10-13 06:59:00

标签: ios cocos2d-iphone kobold2d tiled

我正在构建一个用户(玩家)可以建立自己的城镇的游戏。 在那里,他们可以建造房屋,为房屋添加家具等。基本上类似于模拟人生

我正在使用Tiled Map Editor为每个城镇创建基础。 我在那里定义了以下层

  • 接地
  • 地板
  • 墙壁和家具(基本上所有东西)

所有这些图层最初都是空的。用户可以填写它们。

我正在使用cocos2d v2及其CCTMXTiledMap在我的项目中渲染此tile图。

我意识到的一件事是地图中定义的图层CCTMXLayer仅支持来自一个图块集(#)的图像。

这导致了在进入一些严肃的游戏开发之前我需要回答的以下问题。

问题1。 如果我所有的房子都有相同的墙壁,那么这场比赛就不会有趣。我真的需要在“墙壁和家具”中使用许多不同类型的墙壁 - 瓷砖。 瓷砖有多大?请注意,我需要不仅存储不同的墙面纹理,还要存储由于(#)而代表家具的纹理。

问题2。 你在CCTMXTiledMap中更改切片的方式是(据我所知......),使用setGID方法处理该特定图层。 回到不同墙壁的例子。让我们说玩家可以从滚动的HUD-Layer菜单中选择不同的墙壁。当玩家选择某个墙 - 如何知道该特定墙具有GID(在运行时)?

P.S 我对cocos2d和Tiled都很陌生,所以如果我采取了错误的方法,请告诉我在这样的游戏中我应该采取什么方法。我一直在研究Kobold Touch - 或许更适合我的需求?

1 个答案:

答案 0 :(得分:0)

1)您的tileset需要保持在目标设备的纹理大小限制范围内。你基本上总是安全的1024x1024像素,但最近的设备支持高达4096x4096。见http://www.uchidacoonga.com/2012/04/quick-tip-max-texture-size/

2)通过在tileset中获取tile的本地索引并添加tileset.firstGid属性的值来获取GID。

我鼓励你研究一下Kobold Kit或者升级到更新版本的cocos2d(如果他们摆脱了每层限制的一个tileset)。由于性能原因,每层一个tileset是一个可以理解的限制,但如果你需要,它也很烦人。