我在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,并将其添加到屏幕......它们显示在粉红色面积)
图像应该位于阴暗的粉红色方框中,而是位于蓝色区域(整个蓝色海洋是整个地图)
非常感谢任何想法......谢谢!!
答案 0 :(得分:1)
在浪费了几天试图剖析cocos2d-x中的tilemap_parallax_nodes之后,我终于找出了罪魁祸首......它是层属性cc_vertexz
导致它被渲染到位置之外。我没有时间弄清楚它是如何以及为什么以这种方式工作的,因为我无论如何都不会使用它(我只需要平面,单层,因此不需要z顺序等),所以我只是删除它来自我所有图层的属性,问题就消失了。
希望它有所帮助...谢谢!