2013-12-15 122 views
0

我正在加载使用Tiled软件创建的400x400瓷砖地图。 一个图块为总共48000x48000像素的120个像素。使用cocos2d-x滚动大的瓷砖地图给我黑色的瓷砖,应该有绿色的瓷砖

我加载像这样

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 

感谢您的提前。

回答

1

我认为可以公平地假设cocos2d-x的tilemap渲染器是cocos2d-iphone中的一个直接端口。如果属实,则它们都可以显示最多65,536个顶点(16,384个瓷砖)的限制(不计空白瓷​​砖)。

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

Cocos2d只会渲染多达16,384个瓦片,然后停止,剩余的瓦片将不会被渲染,因此您会看到背景颜色(默认值:黑色)。

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

+0

非常感谢。我用200x200的瓷砖地图进行了尝试,并且它在大约y = 80时也停止了渲染。该贴图包含一个图层,其中全部填充了来自相同纹理的图块。所以我认为它只有大约16,000个而不是65,536个可以由cocos2d-x渲染的图块。我尝试了125x125,它工作正常,但这太有限了,不可信。难道我做错了什么? – Abdalla

+0

对不起,我的坏。它有65k个顶点,但每个瓷砖有4个顶点,因此可制作16k个瓷砖。 – LearnCocos2D

+0

好的,谢谢:) – Abdalla