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