您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x中讲解TileMap地图编辑器的高级用法(对象层部分)

2013-06-08 17:19 330 查看

        cocos2d-x中讲解TileMap地图编辑器的高级用法(对象层部分)       

分类:           
c/c++ioscocos2dx2013-06-08 17:19404人阅读评论(0)收藏举报

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

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





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





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





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

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

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





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

点击 “插入对象”





按钮

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





,不过一般我们就使用一格就好了,





按住右下角的小正方形可以拖拉改变格子的大小

下面我们给对象添加属性

右键点击对象,弹出下框





点击对象属性





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

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

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





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

第二步:读取属性信息

view
source

print?

01.
CCTMXObjectGroup*
group = map->objectGroupName(
"object0"
);
//第一步,获取对象层


02.
CCArray*
objects = group->getObjects();
//获取层上对象集合


03.
CCDictionary*
dict = NULL;


04.
CCObject*
pObj = NULL;


05.
CCARRAY_FOREACH(objects,
pObj)
//遍历对象集合中的对象


06.
{


07.
dict
= (CCDictionary*)pObj;
//


08.
if
(!dict)


09.
break
;


10.
const

char
*
key =
"playerBorn"
;
//设定关键字,对应我们的"playerBorn"


11.
CCString
*str = (CCString*)dict->objectForKey(key);


12.
if
(str)


13.
{


14.
key
=
"x"
;


15.
float

x = ((CCString*)dict->objectForKey(key))->floatValue();
//获取对应对象的x坐标


16.
key
=
"y"
;


17.
float

y = ((CCString*)dict->objectForKey(key))->floatValue();
//获取对应对象的y坐标


18.
player->setPosition(ccp(x,y));
//这里player是我们的主角sprite对象,设置坐标位置


19.
key
=
"hp"
;


20.
int

Hp = ((CCString*)dict->objectForKey(key))->intValue();
//获得主角血量100


21.
player->setHp(Hp);


22.
break
;
//找到过后,退出循环


23.
}


24.
}


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

比如





这里,x是15,y是16,表示的是这个对象在地图的16行15列的格子上,

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

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

本文出自 “奶制品” 博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: