如何在Cocos2d-iphone中的等轴测图中动态添加图块

时间:2013-08-13 18:57:16

标签: cocos2d-iphone tile isometric kobold2d

我有一个使用Tiled Map editor制作的等轴测图。当前图块仅具有基础层(即背景)。

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

因此,当我更改地图的位置时(例如,在滚动时),我希望新添加的图块的行为类似于地图的一部分,并使用地图在其图块位置移动。

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

  

addchild:z:tag:CCTMXLayer不支持。而不是setTileGID: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方面”。这会有帮助吗?

1 个答案:

答案 0 :(得分:0)

如果你想在瓷砖地图编辑器坐标中添加一个瓷砖来说瓷砖(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];