Cocos2d iphone Cocos2d平铺贴图添加精灵

Cocos2d iphone Cocos2d平铺贴图添加精灵,cocos2d-iphone,z-order,Cocos2d Iphone,Z Order,在cocos2d iphone的等轴测平铺贴图z排序示例中,他们使用已经在平铺贴图中的对象作为播放器精灵,该精灵渲染为在树中移动 有没有办法使用通过代码创建的随机CCNode(不在tmx文件中,也不在sprite表中)并使用tilemap对其进行正确的z排序?在CCTMXLayer上不支持addChild,并且在使用时给出了一个错误,即:'addChild:在CCTMXLayer上不受支持。而是使用setTileGID:at:/tileAt:' 必须有一种方法可以使用tilemap使CCNode

在cocos2d iphone的等轴测平铺贴图z排序示例中,他们使用已经在平铺贴图中的对象作为播放器精灵,该精灵渲染为在树中移动

有没有办法使用通过代码创建的随机
CCNode
(不在tmx文件中,也不在sprite表中)并使用tilemap对其进行正确的z排序?在
CCTMXLayer
上不支持addChild,并且在使用时给出了一个错误,即:
'addChild:在CCTMXLayer上不受支持。而是使用setTileGID:at:/tileAt:'


必须有一种方法可以使用tilemap使
CCNode
(比方说一个简单的
CCSprite
)的z顺序正确,可以使用CoCoCos2D的API,也可以使用一些z缓冲区技术。有任何指针吗?

CCTMXLayer不支持在运行时添加分幅,因为它是通过单个精灵表上的所有精灵实现的。由于这个实现细节,您也不能在单个磁贴上调用setTexture

最简单的解决方案是在开始时将要使用的精灵放在精灵表上。如果您不能这样做,因为它是在运行时生成的,或者其他什么,那么下一个最好的方法(不涉及cocos2d代码)就是修改spritesheet

在用于TMXLayer的spritesheet中放置一个虚拟平铺,然后在获得要使用的图像后,使用CCRenderTexture或其他方法将其写入spritesheet,并使用新生成的纹理作为TMXLayer的纹理


您也可以修改CCTMXLayer以允许您的功能,但听起来您似乎希望避免这种情况。

如果您想添加一个平铺来表示平铺(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];