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