CCParticleSystem粒子系統
轉自:http://blog.csdn.net/aa4790139/article/details/8124781
第一次接觸粒子系統,以前遊戲裏面的一些小特效,像製作動畫一樣,是採用一幀一幀的切出來的,由於這種特效,變化無常,切出來的幀,都非常的大,也很耗內存,一下就內存溢出了......呵呵~ 主要是以前都沒有接觸過... 現在接觸了,以後遊戲就可以用到了...開心!
//創建一個CCParticleSystem粒子系統 CCParticleSystem* ignore = CCParticleSystemQuad::create("Particles/SmallSun.plist"); //第一種創建節點方式 CCNode *parent1 = CCNode::create();//創建一個節點 //第二種創建節點方式 CCNode *parent2 = CCParticleBatchNode::create(ignore->getTexture()); //第一種:創建一個CCParticleSystemQuad系統:每個粒子用4個點(Quad,矩形)表示的粒子系統 CCParticleSystemQuad *emitter = CCParticleSystemQuad::create("Particles/SmallSun.plist"); //第二種:創建CCParticleSystemQuad系統 m_emitter = new CCParticleSystemQuad(); std::string filename = "Particles/" +“粒子資源文件名字”+ ".plist"; m_emitter->initWithFile(filename.c_str());
下面是一些常用設置:
emitter1->setStartColor(ccc4f(1,0,0,1));//設置粒子RGBA值 emitter1->setBlendAdditive(false);//是否添加混合 emitter1->setPosition(ccp( s.width/2-30, s.height/2+60*neg));//設置發射粒子的位置 emitter->setAutoRemoveOnFinish(true);//完成後制動移除 //將粒子系統添加到節點(也可以直接將其添加到一個背景精靈CCSprite裏面) parent1->addChild(emitter1, 0, 1); //然後在添加到層裏面 layer->addChild(parent1, 10, 1000+i);
CCParticleSystem中的常用設置參數表:
struct { //重力和方向的向量 CCPoint gravity; //速度 float speed; //粒子的速度差異 float speedVar; //粒子的切線加速度 float tangentialAccel; //粒子間的切線加速度差異 float tangentialAccelVar; //粒子的徑向加速度 float radialAccel; //粒子間的徑向加速度差異 float radialAccelVar; } modeA; struct { //粒子開始半徑 float startRadius; //粒子間開始半徑差異 float startRadiusVar; //粒子結束半徑 float endRadius; //粒子間結束半徑差異 float endRadiusVar; //粒子每秒的旋轉角度 float rotatePerSecond; //粒子間每秒的旋轉角度差異 float rotatePerSecondVar; } modeB;
cocos2dx已經爲我們提供了非常多的粒子系統效果:
-- CCParticleSystem(所有粒子系統的父類)
-- CCParticleSystemPoint、CCParticleSystemQuad (點粒子和方形粒子系統,都繼承了CCParticleSystem的所有屬性)
-- CCParticleExplosion (爆炸粒子效果)
-- CCParticleFireworks (煙花粒子效果)
-- CCParticleFire (火焰粒子效果)
-- CCParticleFlower (花束粒子效果)
-- CCParticleGalaxy (星系粒子效果)
-- CCParticleMeteor (流星粒子效果)
-- CCParticleSpiral (漩渦粒子效果)
-- CCParticleSnow (雪粒子效果)
-- CCParticleSmoke (煙粒子效果)
-- CCParticleSun (太陽粒子效果)
-- CCParticleRain (雨粒子效果)