Tiled版本 保卫萝卜之 小怪按照 划定的轨迹走

来源:互联网 发布:社会科学数据库 编辑:程序博客网 时间:2024/04/29 18:49

<1>加载地图,并且获取地图中点的信息。

void HelloWorld::initMap(){_map = CCTMXTiledMap::create("map.tmx");CCObject* obj = NULL;CCARRAY_FOREACH(_map->getChildren(), obj){CCTMXLayer* _layer = (CCTMXLayer*)obj;_layer->getTexture()->setAliasTexParameters();}this->addChild(_map);//一旦初始化之后,就提取地图信息vector<CCPoint> vTemp;CCTMXObjectGroup* group = _map->objectGroupNamed("road");CCArray* heroArrayDic = group->getObjects();CCARRAY_FOREACH(heroArrayDic, obj){CCDictionary* dic = (CCDictionary*)obj;float x = dic->valueForKey("x")->floatValue();float y = dic->valueForKey("y")->floatValue();vTemp.push_back(ccp(x + _map->getTileSize().width/2, y + _map->getTileSize().height/2));  //别让小怪溜边走了}Hero* hero = Hero::create();hero->vRoad.insert(hero->vRoad.begin(), vTemp.begin(), vTemp.end());  //用一个vector来填充另一个vectoraddChild(hero);if(hero->vRoad.size() > 0)hero->setPosition(hero->vRoad[0]);hero->run();}
<2>英雄按照划定的点行走。
void Hero::run(){if(vRoad.size() - 1 == i){i = 0;this->stopAllActions();return;}float t = ccpDistance(vRoad[i], vRoad[i+1]) / 100.0f;  //以固定的速度行走CCMoveTo* moveTo = CCMoveTo::create(t, vRoad[i+1]);CCCallFuncN* fun = CCCallFuncN::create(this, callfuncN_selector(Hero::moveDone_callback));CCSequence* seq = CCSequence::create(moveTo, fun, NULL);this->runAction(seq);}void Hero::moveDone_callback(CCNode* sender){i++;this->run();}



0 0