CCTMXTiledMap呈现在错误的位置 - iOS,Android和Win32

时间:2014-07-10 06:28:53

标签: android ios cocos2d-x tiled

我在cocos2dx-2.2上使用CCTMXTiledMap,我创建并添加了这样的平铺地图:

// TileMap
CCTMXTiledMap *m_pTileMap = CCTMXTiledMap::create("tilesets/my-isometric-small.tmx");
float fPosX = m_pTileMap->getPositionX();
float fPosY = m_pTileMap->getPositionY();
CCLOG( "TileMapPos: %f, %f", fPosX, fPosY );
this->addChild(m_pTileMap);

平铺地图已成功创建和渲染,但位置不合适。我使用CCTMXTiledMap :: getPosition,CCTMXLayer :: positionAt,还检查我从CCTMXLayer :: tileAt得到的CCSprite ...所有这些都是根据左下角的cocos2d屏幕坐标{(0,0)返回正确的值并且向上和向右增加}然而,当在屏幕上观看时,总会有轻微的偏移,我无法从中获得它。所有m_obOffsetPosition都被确认为零......

通过正确的值,我的意思是瓷砖位于粉红色区域(我从每个瓷砖的getPosition,为每个瓷砖创建CCSprite,每个瓷砖的setPosition,并将其添加到屏幕......它们显示在粉红色面积)

图像应该位于阴暗的粉红色方框中,而是位于蓝色区域(整个蓝色海洋是整个地图)

非常感谢任何想法......谢谢!!

Image supposed to be positioned at shady pink boxes, but instead positioned in the blue area (the entire blue sea is the whole map)

1 个答案:

答案 0 :(得分:1)

在浪费了几天试图剖析cocos2d-x中的tilemap_parallax_nodes之后,我终于找出了罪魁祸首......它是层属性cc_vertexz导致它被渲染到位置之外。我没有时间弄清楚它是如何以及为什么以这种方式工作的,因为我无论如何都不会使用它(我只需要平面,单层,因此不需要z顺序等),所以我只是删除它来自我所有图层的属性,问题就消失了。

希望它有所帮助...谢谢!