天天看點

【Cocos2d-X開發學習筆記】第26期:遊戲背景之滾動地圖背景(CCParallaxNode)的使用

本系列學習教程使用的是cocos2d-x-2.1.4(最新版為3.0alpha0-pre) ,PC開發環境Windows7,C++開發環境VS2010

     在現實生活中,當我們身處一輛快速行駛的車上,用眼睛向窗外眺望的時候,可以很清晰地感覺到離車越遠的風

景移動越慢,而離車越近的風景則會移動越快的視覺差異。

     這種視覺差不僅在現實生活中适用,在遊戲開發中也經常對地圖或者背景采取視覺差的運動規律,讓遊戲背景或

地圖移動的時候顯得更加真實。

一、視覺差效果類CCParallaxNode

在Cocos2D-X引擎中,也為開發者封裝了一個視覺差效果類CCParallaxNode。

首先來看看它的建立方式:

<1> CCParallaxNode::create()

作用:建立一個視覺差效果類。

這個類的主要函數:

<1> addChild(CCNode * child,unsigned int z,CCPoint & parallaxRatio,CCPoint & positionOffset)

作用:添加一個子類“視圖層”。

參數1:子類,添加一個CCNode,讓其作為視覺差效果中的一個視圖層。

參數2:Z軸,視覺差中的遮擋關系。

參數3:x軸、y軸的移動速率。

參數4:子類坐标。

二、項目執行個體

1、首先建立Cocos2D-X項目,取名為“MyCCParallaxNode”,然後在HelloWorldScene.cpp檔案的init函數中添加如下代碼。

bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        CC_BREAK_IF(! CCLayer::init());
       
        CCSprite* spFont = CCSprite::create("front.png");
		CCSprite* spMiddle = CCSprite::create("middle.png");
		CCSprite* spFar = CCSprite::create("far.png");
    
		CCParallaxNode * parallaxNode = CCParallaxNode::create();
		addChild(parallaxNode);
    
		//近景
		parallaxNode->addChild(spFont,3, ccp(4.8f,0), ccp(spFont->getContentSize().width*0.5,spFont->getContentSize().height*0.5) );
		//中景
		parallaxNode->addChild(spMiddle, 2, ccp(1.6f,0), ccp(spMiddle->getContentSize().width*0.5,spMiddle->getContentSize().height*0.5+spFont->getContentSize().height*0.5) );
		//遠景
		parallaxNode->addChild(spFar, 1, ccp(0.5f,0), ccp(spFar->getContentSize().width*0.5,spFar->getContentSize().height*0.5+spFont->getContentSize().height*0.5+spMiddle->getContentSize().height*0.5) );
       
		CCActionInterval* go = CCMoveBy::create(8, ccp(-200,0) );
		CCActionInterval* goBack = go->reverse();
		CCFiniteTimeAction* seq = CCSequence::create(go,goBack, NULL);
		parallaxNode->runAction( (CCRepeatForever::create((CCActionInterval*) seq) ));

        bRet = true;
    } while (0);

    return bRet;
}
           

     從以上代碼可以看出,遠景移動最慢。其X軸每次移動1.6個坐标,Y軸每次移動0個像素,而近景則每次移動的最快。由于CCParallaxNode添加的是CCNode,是以不僅可以添加CCSprite,也可以添加CCTMXTiledMap等CCNode子類。

2、執行個體效果圖

【Cocos2d-X開發學習筆記】第26期:遊戲背景之滾動地圖背景(CCParallaxNode)的使用

源碼下載下傳位址