温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

发布时间:2020-06-10 09:45:43 阅读:3823 作者:lovegame911 栏目:游戏开发
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

之前三篇地图主要讲的都是地图绘制有关的部分,这一篇就讲一讲如果添加对象层,以及如何处理对象层的信息

我们点击 图层->添加对象层

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

这里就会出现一个新的对象层,区别于图层,用紫色标记

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

同样的,我们更改下名字,变为“object0”

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

光加了层没用,我们还得在层上标记具体的对象

下面我们把光标点中“object0”对象层

我们可以看见工具栏有了变化

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

前面与图层有关的按钮变为了灰色,后面与对象层有关的按钮变亮了

点击 “插入对象”

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分) 按钮

然后我们用鼠标在地图上拖出一个框来,格子数多少可以自由决定

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分) ,不过一般我们就使用一格就好了,

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分) 按住右下角的小正方形可以拖拉改变格子的大小

下面我们给对象添加属性

右键点击对象,弹出下框

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分) 

点击对象属性

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

这里上面第一排的名称是方便在编辑器查看用的,因此最上面的“名称”和类型处不填也可以。

下面我们加一个新的属性,命名为playerBorn吧,表示游戏人物主角的出生地

值可以指定为1,下面再定义个Hp的属性,值写个100,表示主角出生血量为100

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分)

确定保存,之后加入到我们的游戏工程目录下

第二步:读取属性信息

CCTMXObjectGroup* group = map->objectGroupName("object0");//第一步,获取对象层  CCArray* objects = group->getObjects();//获取层上对象集合  CCDictionary* dict = NULL;  CCObject* pObj = NULL;  CCARRAY_FOREACH(objects, pObj)//遍历对象集合中的对象  {       dict = (CCDictionary*)pObj;//       if(!dict)      break;       const char* key = "playerBorn";//设定关键字,对应我们的"playerBorn"       CCString *str = (CCString*)dict->objectForKey(key);       if(str)       {           key = "x";      float x = ((CCString*)dict->objectForKey(key))->floatValue();//获取对应对象的x坐标      key = "y";      float y = ((CCString*)dict->objectForKey(key))->floatValue();//获取对应对象的y坐标      player->setPosition(ccp(x,y));//这里player是我们的主角sprite对象,设置坐标位置            key = "hp";           int Hp = ((CCString*)dict->objectForKey(key))->intValue();//获得主角血量100           player->setHp(Hp);            break;//找到过后,退出循环       }  } 

 这里有个地方大家要注意,在编辑器上,我们的x,y属性中的值是格子数,

比如

手把手教你在cocos2d-x中使用TileMap地图编辑器(对象层部分) 这里,x是15,y是16,表示的是这个对象在地图的16行15列的格子上,

但是在cocos2d-x中用读取出来的就不是15,16了,而是自动乘过块大小后在地图上的像素值了,所以这就是为什么我设置主角setPosition的时候,直接用的转换后的,xy值,而没有再用他们去乘以tile块的宽高的原因

基本使用就是这样了,下一篇教大家如何处理斜45度角的地图。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×