【问题标题】:Cocos2d tiled map add spritesCocos2d 平铺地图添加精灵
【发布时间】:2010-12-09 03:14:02
【问题描述】:

在 cocos2d-iphone 的等距平铺地图 z-ordering 示例中,他们使用已在平铺地图中的对象作为玩家精灵,渲染为穿过树木。

有没有办法使用随机的CCNode,通过代码创建(不在 tmx 文件中,也不是精灵表的一部分),并使用 tilemap 正确地进行 z 排序? CCTMXLayer 不支持 addChild,使用时会报错:'addChild: is not supported on CCTMXLayer. Instead use setTileGID:at:/tileAt:'

必须有一种方法可以使CCNode(假设是一个简单的CCSprite)z-order 与 tilemap 一起使用 cocos2d 的 API 或一些 z-buffer 技术正确。有什么指点吗?

【问题讨论】:

    标签: cocos2d-iphone z-order


    【解决方案1】:

    CCTMXLayer 不支持在运行时添加图块,因为它是在单个 spritesheet 上使用所有 sprite 实现的。由于这个实现细节,您也不能在单个图块上调用 setTexture。

    最简单的解决方案是在一开始就在 spritesheet 上放置您想要使用的 sprite。如果你不能这样做,因为它是在运行时生成的或者其他什么,下一个最好的事情(不接触 cocos2d 代码)将是修改 spritesheet。

    在您用于 TMXLayer 的 spritesheet 中放置一个虚拟图块,然后,一旦您有了想要使用的图像,使用 CCRenderTexture 或其他东西将其写入 spritesheet,并使用新生成的纹理作为您的 TMXLayer 的纹理。

    您也可以修改 CCTMXLayer 以支持您的功能,但听起来您想避免这种情况。

    【讨论】:

      【解决方案2】:

      如果你想添加一个瓦片说瓦片 (x,y) ((x,y) 在瓦片地图编辑器坐标) 然后使用下面的代码 -

      myTileMap 是对 CCTMXTiledMap 对象的引用。

      CCTMXLayer *layer=[myTileMap layerNamed:@"yourlayer"];
      NSAssert(floorLayer !=nil, @"Ground layer not found!");    
      CGPoint tileAddPosition = [layer positionAt: CGPointMake(x,y)];
      
      //Create your CCNode or CCSprite or whatever...say object name is **tileToBeAdded**
      
      tileToBeAdded.anchorPoint = CGPointZero;
      tileToBeAdded.position = tileAddPosition;
      [myTileMap addChild:addedTile z:1];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多