【问题标题】:CCTMXTiledMap rendered in incorrect position - iOS, Android and Win32CCTMXTiledMap 渲染位置不正确 - iOS、Android 和 Win32
【发布时间】:2014-07-10 06:28:52
【问题描述】:

我在 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,设置每个图块的位置并将其添加到屏幕......它们显示在粉红色区域)

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

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

【问题讨论】:

  • 截图应该传达什么?看起来像一个 3x3 iso 贴图,带有随机叠加的绿色和粉色精灵。请问这里到底是什么问题,能不能详细描述一下?
  • 这是一张4x4的地图,我把地图改一下更清楚

标签: android ios cocos2d-x tiled


【解决方案1】:

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

希望它对某人有所帮助...谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多