0

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

我正在使用平铺地图编辑器为每个城镇创建基础。在那里我定义了以下层

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

所有这些层最初都是空的。由用户来填充它们。

我正在使用 cocos2d v2 及其CCTMXTiledMap在我的项目中渲染这个瓦片地图。

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

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

问题 1. 如果我所有的房子都有相同的墙壁,这个游戏就不好玩了。我真的需要在“墙壁和家具”-tileset 中使用许多不同类型的墙壁。 一个tileset可以有多大?请注意,由于(#),我不仅需要在此处存储不同的墙壁纹理,还需要存储代表家具的纹理。

问题 2。您更改 a 中的瓷砖的方式CCTMXTiledMap是(据我所知..?)使用该setGID特定图层的方法。回到不同墙壁的例子。假设玩家可以从滚动的 HUD 层菜单中选择不同的墙壁。当玩家选择某面墙时 -我如何知道该GID特定墙有哪面(在运行时)?

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

4

1 回答 1

0

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

2) 通过获取该图块在其图块集中的本地索引并添加该图块集的值来获得 GID。firstGid 属性。

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

于 2014-10-13T08:38:38.447 回答