1

我正在加载使用 Tiled 软件创建的 400x400 平铺地图。一个图块是 120 像素,总共 48000x48000 像素。

我这样加载

    regionMap->initWithTMXFile("background2.tmx");
    mapLayer->addChild(regionMap, 0, enTagTileMap);
    mapLayer->setAnchorPoint(CCPoint(0,1));

然后我像这样滚动。

    mapLayer->setPosition(position);

当我垂直滚动到这个位置时,我不再从地图上获得瓷砖,我只是得到黑色瓷砖。

    x=0 , y=5483.748535

当我水平滚动时,即使到达这个位置也不会遇到同样的问题。

    x=-48000, y=400

感谢提前。

4

1 回答 1

1

我认为假设 cocos2d-x 的 tilemap 渲染器是 cocos2d-iphone 的直接端口是公平的。如果为真,则它们都具有相同的限制,即最多可以显示 65,536 个顶点(16,384 个图块)(不包括空图块)。

假设只有一层并且没有任何“空”图块(空 == GID 值为 0 的图块位置),您的图块地图为 400x400 = 160,000 个图块。这意味着 cocos2d 将/可以渲染的瓷砖数量大约是十倍。

Cocos2d 最多只会渲染 16,384 个图块,然后停止,剩余的图块不会被渲染,所以你会看到背景颜色(默认:黑色)。

一个常见但尴尬的解决方法是将地图拆分为多个 TMX 文件并在代码中对齐它们。

于 2013-12-15T12:56:08.057 回答