【问题标题】:How to add a tile dynamically in isometric map in Cocos2d-iphone如何在 Cocos2d-iphone 的等轴测图中动态添加瓦片
【发布时间】:2013-08-15 12:51:38
【问题描述】:

我有一张使用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 将能够“在运行时创建和修改每个瓷砖地图方面”。这对这里有帮助吗?

【问题讨论】:

    标签: cocos2d-iphone tile isometric kobold2d


    【解决方案1】:

    如果你想添加一个瓦片说瓦片 (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
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 2015-03-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多