【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)[小鱼游戏开发]

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)由小鱼游戏开发精心整理,并分享给大家。喜欢该资源的小伙伴请下载使用,注册、回复、每日签到、点赞送大量积分,满足您免费下载的愿望

原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/8308609

Tiled Map Editor是Cocos2d-x支持的地图编辑器,使用Tiled编辑出的地图可以很方便的被Cocos2d-x使用Tiled的官网是Tiled Map Editor。我使用的地图编辑器是QT版本。

 

好了,下面就试一试吧。

1.编辑地图

选择文件—–>新文件

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

然后选择地图—–>新图块,选择Tiled安装目录下的examples里的图片

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

在这里图片中间和最左边最上边都有黑线,所以绘制偏移1个像素,边距和间距都为一。

下面将图层的名字改为floor,作为地板。

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

把地板铺上砖。

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

新建一个图层,改名为wall,在上面摆上自己喜欢的东西吧。我设计成如下:

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

 

下一步是设置主角,这也比较难的一步。

选择图层——>添加对象层,改对象层为hero。

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

现在在对象层中添加对象。点击工具栏上的添加对象,在地图上话按住鼠标拖出一块。右击该块,改成如下

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

我们看到,下面可以添加名称和值,其实这就是键值对。今后会用对,现在还没有必要用到。

好了,地图编辑好了,先设置参数 ,点击编辑—–>参数,设置为下

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

保存地图。

2.使用地图

使用文本编辑器打开刚才编辑好的地图,将

<image source=”D:/application/Tiled/examples/tmw_desert_spacing.png” width=”265″ height=”199″/>

改为

<image source=”tmw_desert_spacing.png” width=”265″ height=”199″/>

新建一个Cocos2d-x的项目,将地图文件和打开的图块文件复制到resource文件夹下。

在头文件中加入

cocos2d::CCTMXTiledMap *_tileMap;

将init函数中的菜单,精灵,文字的代码删除,加入下面的代码:

		_tileMap=CCTMXTiledMap::create("theMap.tmx"); 		addChild(_tileMap);

编译运行,效果如下

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

 

下面从地图中获得精灵的位置,在头文件中加入精灵的声明

cocos2d::CCSprite *_player;

在源文件中添加如下代码

		CCTMXObjectGroup *objects=_tileMap->objectGroupNamed("hero");//获取对象层 		CCDictionary  *spawnPoint=objects->objectNamed("pa");//获取对象 		const CCString  *x=spawnPoint->valueForKey("x");//获取对象的坐标 		const CCString  *y=spawnPoint->valueForKey("y"); 	///////////////////////////////////////////////////// 		char *tempx=new char[30];//这里的代码将CCString转换为int 		char *tempy=new char[30]; 		memset(tempx,0,30); 		memset(tempy,0,30); 		sprintf(tempx,x->getCString()); 		sprintf(tempy,y->getCString()); 		int px=atoi(tempx); 		int py=atoi(tempy); 		delete tempx; 		delete tempy; /////////////////////////////////////////////////////////// 		_player=CCSprite::create("www.png"); 		_player->setPosition(ccp(px,py)); 		addChild(_player);

这里创建精灵,并且从地图中获得精灵的位置,从而设置精灵的位置。下面是效果图

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

 

下面接着让这个hero可以移动,先添加鼠标响应,在init中添加如下代码

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);

接着覆盖父类的鼠标响应消息

bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { 	return 1; } void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent) { 	cocos2d::CCPoint pp=pTouch->getLocation(); 	if(fabs(pp.x-_player->getPosition().x)>=fabs(pp.y-_player->getPosition().y)) 	{  		if(pp.x>=_player->getPosition().x) 		{ 			_player->setPosition(ccp(_player->getPosition().x+32,_player->getPosition().y)); 		} 		else 		{ 			_player->setPosition(ccp(_player->getPosition().x-32,_player->getPosition().y)); 		}  	} 	else 	{  		if(pp.y>=_player->getPosition().y) 		{ 			_player->setPosition(ccp(_player->getPosition().x,_player->getPosition().y+32)); 		} 		else 		{ 			_player->setPosition(ccp(_player->getPosition().x,_player->getPosition().y-32)); 		} 	} 	  }

在这里,先在ccTouchBegan中返回true,以便在ccTouchEnded中处理事件。

原理是先判断鼠标点击的点与hero现在的点是在x方向还是在y方向上的距离大,若在x方向上距离大,则改变x左边,若在y方向上距离大,则改变y的坐标。然后使hero向着点击点移动。

下面是效果图

【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

 

好了,效果达到了,下一篇继续Tiled Map Editor,欢迎继续关注。

 

最后当然是要附上源代码,当然是零积分:点击下载

来源网址:http://blog.csdn.net/zhy_cheng/article/details/8308609

轻松一刻:

生产队杀鹅过年,队长写通知,把鹅字写得较散,变成:“下午男人杀我鸟,女人拔我鸟毛,晚上男人老少都来吃我鸟肉!也可以吃我鸟蛋!”
 下载地址
登录  查看下载地址。

提示:注册,评论,每日签到,点赞可获得积分。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

联系我们

联系我们

在线咨询: QQ交谈

邮箱: 2805477110@qq.com

周一至周六,8:00-21:00,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部
切换注册

登录

忘记密码 ?

切换登录

注册