转自: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 (雨粒子效果)