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);

 }  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章