cocos2d - 地图 CCTMXTiledMap

本文详细介绍了如何使用Cocos2d中的CCTMXTiledMap类来读取、加载和操作Tiled Map文件,并通过实例展示了如何在地图中获取瓦块属性和物体层信息。



使用 TileMapEdit 编辑地图,然后保存为 tmx 文件,然后把tmx文件和png原图放到Resource目录下。

cocos2d中使用 CCTMXTiledMap 来读取tmx文件:

[java]  view plain copy
  1. CCTMXTiledMap *map = [CCTMXTiledMap tiledMapWithTMXFile:@"test.tmx"];  
[java]  view plain copy
  1. [self addChild:map];  
tmx是XML格式的文件。


使用 CCTMXLayer 获得视图层:

[java]  view plain copy
  1. CCTMXLayer *eventLayer = [map layerNamed:@"GameEventLayer"];  
然后你可以使用瓦块在地图中的坐标获得GID(全局标示符):

[java]  view plain copy
  1. int gid = [eventLayer tileGIDAt:ccp(4,1)];  
如果GID==0表示在该位置没有瓦块,你将会透过当前层看到下层的地图,如果GID!=0你可以获得该瓦块的属性:

[java]  view plain copy
  1. if (gid != 0) {  
  2.     NSDictionary *dic = [map propertiesForGID:gid];  
  3.     if (dic != nil) {  
  4.         //  
  5.     }  
  6. }  
瓦块中的所有属性将会保存在dic字典中,属性是在TileMapEdit编辑器中编辑的。

通过 CCTMXObjectGroup 可以获得物体层:

[java]  view plain copy
  1. CCTMXObjectGroup *objectLayer = [map objectGroupNamed:@"ObjectLayer"];//传递TileMapEdit中取的名字  

通过以下代码,获得所有物体区域的属性:

[java]  view plain copy
  1. int objectCount = [[objectLayer objects] count];  
  2.         for (Byte i = 0; i < objectCount; i++) {  
  3.             NSDictionary *dic = [[objectLayer objects] objectAtIndex:i];  
  4.               
  5.             if (dic != nil) {  
  6.                 //  
  7.             }  
  8.         }  

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值