1

我在 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 都被确认为零......

通过正确的值,我的意思是图块位于粉红色区域(我从每个图块中获取位置,为每个图块创建 CCSprite,每个图块的 setPosition 并将其添加到屏幕......它们显示在粉红色区域)

图像应该定位在阴暗的粉红色框,而是定位在蓝色区域(整个蓝色的大海就是整个地图)

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

图像应该定位在阴暗的粉红色框,而是定位在蓝色区域(整个蓝色的大海就是整个地图)

4

1 回答 1

1

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

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

于 2014-07-11T03:44:47.767 回答