cocos2dx TiledMap

1.

先去官网下载TiledMap ,这个是cocos2dx设计地图的一个很重要的方式

 

2.大家可以去看看他写的http://blog.csdn.net/zhy_cheng/article/details/8316277写的很好

3.接下来就

这一行是地图数据的来源,最好把它修改成工程目录下的Resource下,就是什么都不加  当然,程序的资源得拖过去

4.

pMap = CCTMXTiledMap::create("testmap.tmx");   //pMap的类型为CCTMXiledMap,创建TMX的地图,很简单

	addChild(pMap,1,123);                 //加入场景
	CCTMXObjectGroup *pGrounp = pMap->objectGroupNamed("hero");   //这里解释一下,CCTMXObjectGroup是一个对象层或者精灵层,想之前的
								      //wall,hero这些都是不同的层,可以用objectGroupNamed(),根据层的名字来获取到层的指针
	CCDictionary     *pPerson = pGrounp->objectNamed("person");

    float  cx = pPerson->valueForKey("x")->floatValue();   //获取坐标
	float  cy = pPerson->valueForKey("y")->floatValue();//获取坐标

	sprite = CCSprite::create("www.png");
	sprite->getTexture()->setAliasTexParameters();
	sprite->setPosition(ccp(cx,cy));

剩下的就是一些处理人物移动,地图移动了,先addTargetedDelegate

 bool  HelloWorld::ccTouchBegan (CCTouch *pTouch, CCEvent *pEvent)
 {
	 beginpos = pTouch->getLocation();
	 return true;
 }
 void  HelloWorld::ccTouchMoved (CCTouch *pTouch, CCEvent *pEvent)
 {
	 CCPoint prepos = pTouch->getPreviousLocation();
	 CCPoint nowpos = pTouch->getLocation();

	 CCPoint abspos = ccpSub(nowpos,prepos);
	 if(pMap->getPosition().x + abspos.x > -480 && pMap->getPosition().x + abspos.x < 0)
	 {
		 pMap->setPosition(ccp(pMap->getPosition().x+abspos.x,0));
	 }

 }
 void  HelloWorld::ccTouchEnded (CCTouch *pTouch, CCEvent *pEvent)
 {
	// CCPoint::CCPointEqualToPoint()
	 if(!beginpos.equals(pTouch->getLocation()))
	 {
		 return;
	 }
	 cocos2d::CCPoint pp=pTouch->getLocation();  
	 sprite->stopAllActions();
	 CCMoveTo  *pmove;
	 if(fabs(pp.x-sprite->getPosition().x)>=fabs(pp.y-sprite->getPosition().y))  
	 {  

		 if(pp.x>=sprite->getPosition().x)  
		 {  
			 
			 pmove = CCMoveTo::create(0.5,ccp(sprite->getPosition().x+32,sprite->getPosition().y));
			
		 }  
		 else  
		 {  
			pmove = CCMoveTo::create(0.5,ccp(sprite->getPosition().x-32,sprite->getPosition().y));  
		 }  

	 }  
	 else  
	 {  

		 if(pp.y>=sprite->getPosition().y)  
		 {  
			pmove = CCMoveTo::create(0.5,ccp(sprite->getPosition().x,sprite->getPosition().y+32));  
		 }  
		 else  
		 {  
			 pmove = CCMoveTo::create(0.5,ccp(sprite->getPosition().x,sprite->getPosition().y-32));  
		 }  
	 }  
	 sprite->runAction(pmove);

 }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值