视差滚屏效果的实现:

我们在做IOS游戏开发的时候,经常会遇到那种屏幕动的效果,比如跑酷类的游戏,就这这种效果的典型应用。

效果图:

核心代码:

bool HelloWorld::init()

{

//

// 1. super init first

if ( !CCLayer::init() )

{

return false;

}

CCSize screenSize = CCDirector::sharedDirector()->getWinSize();

CCSprite *para1 = CCSprite::create("parallax1.png");

CCSprite *para2 = CCSprite::create("parallax2.png");

CCSprite *para3 = CCSprite::create("parallax3.png");

CCSprite *para4 = CCSprite::create("parallax4.png");

para1->setAnchorPoint(CCPointMake(0, 1));

para2->setAnchorPoint(CCPointMake(0, 1));

para3->setAnchorPoint(CCPointMake(0, 0.6f));

para4->setAnchorPoint(CCPointMake(0, 0));

CCPoint topOffset = CCPointMake(0, screenSize.height);

CCPoint midOffset = CCPointMake(0, screenSize.height/2);

CCPoint downOffset = CCPointMake(0, 0);

CCParallaxNode* paraNode = CCParallaxNode::create();

paraNode->addChild(para1, 1, CCPointMake(0, 10), topOffset);

paraNode->addChild(para2, 2, CCPointMake(0, 10), topOffset);

paraNode->addChild(para3, 3, CCPointMake(0, 10), midOffset);

paraNode->addChild(para4, 4, CCPointMake(0, 10), downOffset);

this->addChild(paraNode,2,1);

CCMoveBy*move1 = CCMoveBy::create(3, CCPointMake(0, -160));

CCMoveBy*move2 = CCMoveBy::create(3, CCPointMake(0, 160));

CCSequence*sequence = CCSequence::create(move1,move2,NULL);

CCRepeatForever *repeat = CCRepeatForever::create(sequence);

paraNode->runAction(repeat);

return true;

}

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐