1

我有一张使用平铺地图编辑器制作的等距地图。当前图块只有一个基础层(即背景)。

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

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

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

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

4

1 回答 1

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];
于 2013-08-21T07:14:00.427 回答