7、cocos2dx之粒子系統

本文由qinning199原創,轉載請註明:http://www.cocos2dx.net/?p=66函數

1、介紹動畫

粒子系統指的是一個使用大量很小的精靈或者其餘的一些繪製對象模擬一些模糊效果。使用傳統的繪製技術很難實現。它們常常被用到一些混亂系統,天然現象以及一些化學反應動畫效果中。this

 

2、點vs矩形spa

在以前版本的cocos2dx中,有兩種類型的粒子系統:矩形和點陣粒子系統:.net

1)CCParticleSystemQuad對象

2)CCParticleSystemPointblog

CCParticleSystemQuad有一些額外的特色而CCParticleSystemPoint不支持:圖片

1)旋轉粒子系統:粒子們可以圍繞軸線旋轉,而CCParticleSystemPoint沒有這個屬性ci

2)粒子們有大小。而在CCParticleSystemPoint中,若是粒子尺寸大於64,那麼將會被當成64get

3)整個系統能夠被縮放,可使用縮放屬性

由於CCParticleSystemPoint不支持CCParticleBatchNode,因此它被從cocos2dx粒子系統中移除掉了(囧)。

3、CCParticleBatchNode

一個CCParticleBatchNode 可以引用一個紋理而且只有一個紋理(一個圖片文件)。只有被包含在紋理中的CCParticleSystems能夠被添加到CCSpriteBatchNode。被添加到CCSpriteBatchNode 中的CCParticleSystems在一個OpenGL ES繪製中調用。若是 CCParticleSystems沒有被添加進一個CCParticleBatchNode,那麼每個粒子系統都須要被OpenGL ES繪製一次,那樣效率就很低了。

建立一個矩形粒子系統

CCParticleSystemQuad* m_emitter = newCCParticleSystemQuad();
m_emitter = CCParticleFire::create();

  

4、重力vs半徑模式

重力模式


重力模式可以讓粒子飛向或者遠離一箇中心點。這種的優點是它容許一個動態的,組織的效果。你能夠用以下代碼設置重力模式:

 

//重力模式
this->m_nEmitterMode = kCCParticleModeGravity;

this->modeA.gravity = ccp(0,-90);

  

 

在重力模式中,如下屬性是合法的:

gravity (Point)。粒子系統的重力。

speed (float)。粒子們射出的速度。

speedVar(float)速度變量

tangencialAccel(float)粒子們的正切加速度

tangencialAccelVar(float)粒子們正切加速度的變量

radialAccel(float)粒子們的半徑加速度。

radialAccelVar(float)粒子們半徑加速度的變量

半徑模式


半徑模式可以讓粒子在圓中旋轉。也能夠創造螺旋模式能讓粒子向屏幕裏屏幕外飛。你能夠設置半徑模式用下面的幾行代碼:

 

// 半徑模式
this->m_nEmitterMode = kCCParticleModeRadius;
// 設置開始半徑
this->modeB.startRadius = 0;
this->modeB.startRadiusVar = 0;//ccp(0,0);

  

 

半徑模式有下列合法的屬性:
startRadius (a float).粒子的開始半徑

 

startRadiusVar (a float). 開始半徑變量
endRadius (a float). 粒子的結束半徑
endRadiusVar (a float).結束半徑變量
rotatePerSecond (a float).圍繞一個來源點的每秒旋轉角度
rotatePerSecondVar (a float).每秒旋轉角度變量

粒子們的常規屬性:

startSize:粒子的初始尺寸(像素值)
startSizeVar
endSize:粒子的結束尺寸(若是你想讓粒子的開始大小同結束大笑相同,就用一下kCCParticleStartSizeEqualToEndSize
endSizeVar
startColor :粒子開始顏色(ccColor4F)
startColorVar
endColor :粒子結束顏色
endColorVar
startSpin:僅用在CCParticleSystemQuad中,起始螺旋度
startSpinVar
endSpin:僅用在CCParticleSystemQuad中,結束螺旋度
endSpinVar
life粒子的生命生存時間,單位是秒
lifeVar
angle:粒子開始角度,float
angleVar
positon:CCPoint粒子位置
positonVar
centerOfGravity :CGPoint

系統通用屬性:

emissionRate duration (a float):每秒有多少粒子被髮射

duration (a float):粒子系統生存時間

blendFunc (a ccBlendFunc):用於系統渲染的OpenGL的渲染函數

positionType (a tCCPositionType).:使用kCCPositionTypeFree (默認值)屬性能夠自由的移動粒子們。或者使用kCCPositionTypeGrouped 讓粒子們一組一組的移動。

texture (a CCTexture2D).粒子的紋理

相關文章
相關標籤/搜索