我在cocos2dx-2.2上使用CCTMXTiledMap,我创建并添加了以下平铺 map :

// 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);

平铺的 map 创建和渲染成功,但是位置不正确。我使用CCTMXTiledMap::getPosition,CCTMXLayer::positionAt,还检查了我从CCTMXLayer::tileAt获得的CCSprite ...它们都基于cocos2d屏幕坐标{(0,0)从左下角返回正确的值然后向上和向右增加}但是,在屏幕上查看时,总是会有一点偏移,我无法知道它的来源。确认所有m_obOffsetPosition为零...

用正确的值表示瓦片位于粉红色区域中(我从每个瓦片中获取getPosition,为每个瓦片创建CCSprite,每个瓦片的setPosition并将其添加到屏幕...它们显示在粉红区域中)

图片原本应该放置在阴暗的粉红色盒子中,但是应该放置在蓝色区域中(整个蓝色海洋就是整个 map )

任何想法都受到高度赞赏...谢谢!

最佳答案

在浪费了几天尝试在cocos2d-x中剖析tilemap_parallax_nodes之后,终于我找出了罪魁祸首...正是Layer属性cc_vertexz导致其呈现在不正确的位置。我没有时间弄清楚它是如何工作的以及为什么会这样工作,而且由于我无论如何都不会使用它(我只需要平坦的单层,因此不需要z顺序等),所以我只需要删除它我所有图层的属性,问题就消失了。

希望它可以帮助某人...谢谢!

关于android - CCTMXTiledMap呈现在错误的位置-iOS,Android和Win32,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24669825/

10-11 20:13