本系列學習教程使用的是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、執行個體效果圖
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyMwcTNyEjMzEjMygDMzEDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
源碼下載下傳位址