《Cocos2d学习之路》八、瓦片地图TiledMap的基本使用

《Cocos2d学习之路》八、瓦片地图TiledMap的基本使用,第1张

概述转载请说明出处:http://blog.csdn.net/lsmfeixiang/article/details/43673603 github地址:https://github.com/teffy/cocos2dx 最近看了TiledMap的基本使用 Tiled工具 首先需要Tiled工具,具体使用网上很多博客都写过,我也是搜索的学习的 这是cocos官方的demo中的一个地图资源,是以tmx后

转载请说明出处:http://www.jb51.cc/article/p-sxlrodrb-bas.html

github地址:https://github.com/teffy/cocos2dx


最近看了TiledMap的基本使用

Tiled工具

首先需要Tiled工具,具体使用网上很多博客都写过,我也是搜索的学习的


这是cocos官方的demo中的一个地图资源,是以tmx后缀的文件,其实是xml

<?xml version="1.0" enCoding="UTF-8"?><map version="1.0" orIEntation="orthogonal" renderorder="right-down" wIDth="12" height="12" tilewIDth="101" tileheight="81" nextobjectID="4"> <tileset firstgID="1" name="UnTitled" tilewIDth="101" tileheight="171" spacing="2" margin="2">  <image source="test2_2.png" wIDth="1024" height="1024"/> </tileset> <tileset firstgID="46" name="tileset2" tilewIDth="101" tileheight="171" spacing="2" margin="2">  <image source="test2.png" wIDth="1024" height="1024"/> </tileset> <layer name="Layer 0" wIDth="12" height="12">  <data enCoding="base64" compression="gzip">   H4sIAAAAAAAAC2NgGAX4AB8Q8wOxAJsvBMRcQMyNhHEBZiBmAmIWIGYFYjYS7BUCYmEg1gBiVSBWgYqrImFBINYGYgkgFgFiUah6liLUw9xOrpncOMwHAN53jmxAAgAA  </data> </layer> <layer name="Layer 1" wIDth="12" height="12">  <data enCoding="base64" compression="gzip">   H4sIAAAAAAAAC2NgGAXUBNZAbAPEtmToNQBifSA2BGIjIDYmQa89GfbhMgcd4wMA7a2boEACAAA=  </data> </layer> <layer name="Layer 2" wIDth="12" height="12">  <data enCoding="base64" compression="gzip">   H4sIAAAAAAAAC2NgGAUDCfiAmB+IBcjQywzETEDMAsSsQMxGgl4hMuzDBgAgyUssQAIAAA==  </data> </layer> <objectgroup name="Obj1">  <object ID="1" name="o1" x="254" y="610" wIDth="277" height="130" rotation="7">   <propertIEs>    <property name="aa" value="12"/>   </propertIEs>  </object> </objectgroup></map>
其中几个重要的属性,map标签中的wIDth和height是瓦块在横竖方向上的个数,tilewIDth和tileheight是每一个瓦块的宽高,tileset是设置图片资源,layer是layer层的一些属性,其中data是具体这一层上面的各个瓦块地图资源位置等数据,objectgroup是obj层的一些属性。 具体在Cocos2d中code使用

1、加载tmx地图

	tiledMap = TMXTiledMap::create("res/test2.tmx");	addChild(tiledMap);
然后给地图加上touch监听,后面做打log用
	EventListenertouchOneByOne* Listener = EventListenertouchOneByOne::create();	Listener->setSwallowtouches(true);	Listener->ontouchBegan = CC_CALLBACK_2(HelloWorld::ontouchBegan,this);	Listener->ontouchCancelled = CC_CALLBACK_2(HelloWorld::ontouchCancelled,this);	Listener->ontouchended = CC_CALLBACK_2(HelloWorld::ontouchended,this);	Listener->ontouchmoved = CC_CALLBACK_2(HelloWorld::ontouchmoved,this);	Director::getInstance()->getEventdispatcher()->addEventListenerWithSceneGraPHPriority(Listener,tiledMap);
实现一个小功能,在点击地图的时候,将所点击的图块资源换成一个宝箱,然后跳动几下
bool HelloWorld::ontouchBegan(touch* touch,Event* event){	Vec2 touchLoaction = touch->getLocation();	Size tiledSize = tiledMap->getTileSize();	Size mapSize = tiledMap->getMapSize();	Vec2 touchLoaction1 = Vec2(touchLoaction.x,tiledSize.height* mapSize.height - touchLoaction.y);	log("tiledSize:%d,%d",tiledSize.wIDth,tiledSize.height);	log("mapSize:%d,mapSize.wIDth,mapSize.height);	int x = touchLoaction1.x / tiledSize.wIDth;	int y = touchLoaction1.y / tiledSize.height;	log("x:%d,y:%d",x,y);//打印出所点击的图块的位置	TMXLayer* layer0 = tiledMap->layernamed("Layer 0");	layer0->setTileGID(0,Vec2(x,y));	TMXLayer* layer1 = tiledMap->layernamed("Layer 1");	layer1->setTileGID(0,y));//设置0是将图块资源设置为空	TMXLayer* layer2 = tiledMap->layernamed("Layer 2");	layer2->setTileGID(8,y));//改变图片资源	Sprite * sprite = layer2->tileAt(Vec2(x,y));	sprite->runAction(JumpBy::create(1.5f,Vec2(0,0),40,4));	return true;}
然后我们来获取一下Obj层的一些具体属性,这些可以再游戏中用来设置很多场景
voID HelloWorld::ontouchended(touch* touch,Event* event){	TMXObjectGrouP* objGroup = tiledMap->getobjectGroup("Obj1");	ValueVector vv = objGroup->getobjects();	auto o1 = objGroup->getobject("o1");	int xxx = o1.at("x").asInt();	int aa = o1.at("aa").asInt();	log("xxxx->%d,aa->%d",xxx,aa);}

以上是一些简单的使用,具体游戏 场景肯定比这复杂的多,后续如果有遇到一些合适的demo会基于这个写一下demo.
点击下载资源 总结

以上是内存溢出为你收集整理的《Cocos2d学习之路》八、瓦片地图TiledMap的基本使用全部内容,希望文章能够帮你解决《Cocos2d学习之路》八、瓦片地图TiledMap的基本使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1040224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存