现在做的项目里,关卡设计采用的是,在一张地图上盘绕着一条弯弯曲曲的路线,关卡按钮分布在这条路径上。
然后就涉及到一个问题:一个代表当前关卡的精灵,是在关卡之间沿直线走,还是沿着设计的弯曲路线来走。
然后就涉及到一个问题:一个代表当前关卡的精灵,是在关卡之间沿直线走,还是沿着设计的弯曲路线来走。
沿直线走直接用CCMoveTo就能实现,这里介绍一个CCCatmullRomTo样条路径(《cocos2d-x权威指南》上的翻译。。。)
CCSprite *sprite=CCSprite::create("CloseNormal.png");
sprite->setPosition(CCPointZero);
this->addChild(sprite);
CCPointArray *trackI=CCPointArray::create(10);//定义数组
trackI->addControlPoint(CCPointZero);
trackI->addControlPoint(ccp(400,20));
trackI->addControlPoint(ccp(400,300));
trackI->addControlPoint(ccp(30,300));
trackI->addControlPoint(ccp(200,150));
CCCatmullRomTo *action=CCCatmullRomTo::create(2,trackI);
sprite->runAction(action);
这样精灵就会在设定的这些点上移动了。