Cocos2dx(1) 粒子系统 CCParticleSystem
粒子系统 CCParticleSystem(粒子发射器)
在几乎所有的游戏引擎中,都有专属的类来进行生成粒子系统,其中主要有两个功能类:
(1)。粒子:具有大量属性(如生命,方向,速度,加速度等)的结构体或类。表现为一个粒子个体。
(2)。粒子发射器:用来进行生成,控制,回收粒子的管理器类。
在进行粒子系统的创建时,首先把粒子发射器放到某个位置,然后设定要生成的粒子的数量及粒子的起始属性(往往设定生命值为随机),然后在开始创建出粒子并不断的更新粒子,粒子在更新运动状态的同时生命值会被不断的消耗直至死亡。死亡后的粒子被发射器记录回收,为了保证同一时间内有固定数量的粒子在存活中,发射器会在合适的时间重新初始化并运行回收的粒子。
参考:http://blog.csdn.net/houjia159/article/details/12049243
更过的操作,参考API

Cocos2d-x提供粒子特效:
1.CCParticleExplosion 2.CCParticleFire 3.CCParticleFireworks
4.CCParticleFireworks 5.CCParticleGalaxy 6.CCParticleMeteor
7.CCParticleRain 8.CCParticleSmoke 9.CCParticleSnow
10.CCParticleSpiral 11.CCParticleSun
//1.爆炸粒子效果 CC CCParticleSystem* particleSystem = CCParticleExplosion::create(); particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("stars.png")); this->addChild(particleSystem);

代码参考:转自http://blog.csdn.net/zhy_cheng/article/details/8289683
CCParticleSystemQuad *m_emitter=new CCParticleSystemQuad(); m_emitter->initWithTotalParticles(900);//900个粒子对象 //设置图片 m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("snow.png")); //设置发射粒子的持续时间-1表示一直发射,0没有意义,其他值表示持续时间 m_emitter->setDuration(-1); //设置中心方向,这个店是相对发射点,x正方向为右,y正方向为上 m_emitter->setGravity(CCPoint(0,-240)); //设置角度,角度的变化率 m_emitter->setAngle(90); m_emitter->setAngleVar(360); //设置径向加速度,径向加速度的变化率 m_emitter->setRadialAccel(50); m_emitter->setRadialAccelVar(0); //设置粒子的切向加速度,切向加速度的变化率 m_emitter->setTangentialAccel(30); m_emitter->setTangentialAccelVar(0); //设置粒子的位置,位置的变化率 m_emitter->setPosition(CCPoint(400,500)); m_emitter->setPosVar(CCPoint(400,0)); //设置粒子声明,生命的变化率 m_emitter->setLife(4); m_emitter->setLifeVar(2); //设置粒子开始的自旋转速度,开始自旋转速度的变化率 m_emitter->setStartSpin(30); m_emitter->setStartSpinVar(60); //设置结束的时候的自旋转以及自旋转的变化率 m_emitter->setEndSpin(60); m_emitter->setEndSpinVar(60); ccColor4F cc; cc.a=1.0f; cc.b=255.0f; cc.g=255.0f; cc.r=255.0f; ccColor4F cc2; cc2.a=0; cc2.b=0; cc2.g=0; cc2.r=0; //设置开始的时候的颜色以及颜色的变化率 m_emitter->setStartColor(cc); m_emitter->setStartColorVar(cc2); //设置结束的时候的颜色以及颜色的变化率 m_emitter->setEndColor(cc); m_emitter->setEndColorVar(cc2); //设置开始时候粒子的大小,以及大小的变化率 m_emitter->setStartSize(30); m_emitter->setStartSizeVar(0); //设置粒子结束的时候的大小,以及大小的变化率 m_emitter->setEndSize(20.0f); m_emitter->setEndSizeVar(0); //设置每秒钟产生粒子的数目 m_emitter->setEmissionRate(100); addChild(m_emitter);
参考链接:http://blog.csdn.net/honghaier/article/details/8580390
四、重力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).粒子的纹理
浙公网安备 33010602011771号