如何在Cocos2d iphone中的等轴测图中动态添加平铺



我有一个使用平铺贴图编辑器制作的等轴测贴图。当前瓦片只有一个底层(即背景)。

我想在这个层上动态添加一个瓦片,比如在瓦片位置(1,1),这样瓦片就可以有效地成为地图的一部分。

因此,当我更改地图的位置时(例如,在滚动时),我希望新添加的瓦片表现得像地图的一部分,并随着地图在其瓦片位置上移动。

我尝试了CCTMXLayer类-(void) addChild: (CCNode*)node z:(NSInteger)z tag:(NSInteger)tag;,但它抛出了一个错误。我不太懂第二行。

addchild:z:tag:在CCMXLayer上不受支持。而不是设置TileGID:at:/tileAt:

此外,我尝试在Tiled中添加一个对象层,并访问了一个对象属性-

CCTMXObjectGroup* objectLayer=[tileMap objectGroupNamed:@"ObjectLayer"];
NSDictionary *properties = [objectLayer objectNamed:@"theObject"];
int x = [properties[@"x"] intValue];
int y = [properties[@"y"] intValue];

在这里,我面临着从x,y值转换为屏幕坐标的困难。或者从x,y到校正tilePos。这里需要紧急帮助。

旁注-我读到Kobold Kit将能够"在运行时创建和修改每个tilemap方面"。这对这里有帮助吗?

如果您想添加一个tile来表示tile(x,y)(Tiled Map编辑器坐标中的(x,y)),请使用以下代码-

myTileMap是对CCTMXDiledMap对象的引用。

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];

相关内容

  • 没有找到相关文章

最新更新