标签:
粒子系统主要分为如下两种模式:??
1.重力式粒子系统(CCParticleSystemPoint ): 这种粒子存在重力,好像地球的万有引力一样,所有的粒子都会收到重力的约束,当然重力的大小是可以自己定义的
2.放射性粒子系统(CCParticleSystemQuad):: 这种粒子不存在重力,因此粒子好像都在空中,不再收到地球万有引力的作用
@1——根据 plist 文件创建粒子系统:
CCParticleSystemQuad *emitter1 = CCParticleSystemQuad::create("Particle/BurstPipe.plist");
emitter1->setPosition(ccp( size.width/2, size.height/2)); // 设置发射粒子的位置
emitter1->setAutoRemoveOnFinish(true); // 完成后制动移除
emitter1->setDuration(10); // 设置粒子系统的持续时间秒
this->addChild(emitter1, 0, 1);
@2——不使用plist 文件创建粒子系统
重力式粒子系统/CCParticleSystemPoint 使用代码如下:
创建一个Point 粒子系统
CCParticleSystemPoint *m_emitter = new CCParticleSystemPoint();
产生300个粒子对象
m_emitter->initWithTotalParticles(300);
设置粒子对象以及粒子系统的相关参数
设置粒子的图像,粒子虽小但是还需要有自己的图像,如果没有texture 属性引擎会默认一个图像
m_emitter->setTexture( CCTextureCache::sharedTextureCache("test.png")); // CCTextureCache::sharedTextureCache()->addImage("a.png"));
1、设置粒子系统的持续时间
m_emitter->setDuration(-1);
2、设置重力方向
m_emitter->setGravity(CCPointZero);
3、设置角度,角度变化率
m_emitter->setAngle(0);
m_emitter->setAngleVar(360);
4、设置径向加速度,径向加速度变化率
m_emitter->setRadialAccel(70);
m_emitter->setRadialAccelVar(10);
5、设置切向加速度,切向加速度变化率
m_emitter->setTangentialAccel(80);
m_emitter->setTangentialAccelVar(0);
6、设置运动速度,运动速度变化率
m_emitter->setSpeed(50);
m_emitter->setSpeedVar(10);
7、设置粒子位置,粒子位置变化率
m_emitter->setPosition(CCPointMake(s.width/2,s.height/2));
m_emitter->setPosVar(CCPointzero);
8、设置粒子存在时间,存在时间变化率
m_emitter->setLife(2.0f);
m_emitter->setLifeVar(0.3f);
9、设置粒子开始时候颜色,粒子开始时颜色变化率
m_emitter->setStartColor({0.5f,0.5f,0.5f,0.5f}); // emitter1->setStartColor(ccc4f(1,0,0,1));//设置粒子RGBA值
m_emitter->setStartColorVar({0.5f,0.5f,0.5f,1.0f});
10、设置粒子结束时候颜色,粒子结束时颜色变化率
m_emitter->setEndColor({0.1f,0.1f,0.1f,0.2f});
m_emitter->setEndColorVar({0.1f,0.1f,0.1f,0.2f});
11、设置粒子开始时候大小,粒子开始时大小变化率
m_emitter->setStartSize(1.0f);
m_emitter->setStartSizeVar(1.0f);
12、设置粒子结束时候大小,粒子结束时大小变化率
m_emitter->setEndSize(32.0f);
m_emitter->setEndSizeVar(8.0f);
13、设置每秒产生的粒子数
m_emitter->setEmissionRate(m_emitter->getTotalParticles()/m_emitter->getLife()); // 每秒产生粒子数 = 粒子总数/存活时间 ;
将这个粒子系统设置到背景层上:
m_background->addChild(m_emitter,1);
2.2【放射性粒子系统/CCParticleSystemQuad】
2.2.1】 创建一个Quad粒子系统
CCParticleSystemQuad *m_emtter = new CCParticleSystemQuad();
2.2.2】 产生300个粒子对象
m_emitter->initWithTotalParticles(300);
2.2.3】设置粒子对象以及粒子系统的相关参数
1 2 3 4 5 6 7 8 9 10 11 12 13 和重力式粒子系统一样唯一不同的就是参数
下面增加发射型粒子系统特有的属性
14、设置粒子开始时候自旋转的速度,以及变化率:
m_emitter->setStartSpin(0);
m_emitter->setStartSpinVar(0);
15、设置粒子结束时候自旋转的速度,以及变化率:
m_emitter->setEndSpin(0);
m_emitter->setEndSpinVar(2000);
2.2.4】将 m_emitter 设置到 m_background这个层(Layer)上面
m_background->addChild(m_emitter,1);
重力vs半径模式
重力模式能够让粒子飞向或者远离一个中心点。这种的优势是它允许一个动态的,组织的效果。你可以用如下代码设置重力模式:
重力模式
1. m_emitter->setEmitterMode(kCCParticleModeGravity);
2. m_emitter->setGravity(CCPointZero);
在重力模式中,以下属性是合法的:
gravity (Point)。粒子系统的重力。
speed (float)。粒子们射出的速度。
speedVar(float)速度变量
tangencialAccel(float)粒子们的正切加速度
tangencialAccelVar(float)粒子们正切加速度的变量
radialAccel(float)粒子们的半径加速度。
radialAccelVar(float)粒子们半径加速度的变量
半径模式
半径模式能够让粒子在圆中旋转。也可以创造螺旋模式能让粒子向屏幕里屏幕外飞。你可以设置半径模式用下面的几行代码:
1. m_emitter->setEmitterMode(kCCParticleModeRadius);
2. // 设置开始半径和结束半径
3. m_emitter->setStartRadius(100);
4. m_emitter->setStartRadiusVar(0);
5. m_emitter->setEndRadius(kCCParticleStartRadiusEqualToEndRadius);
6. m_emitter->setEndRadiusVar(0);
半径模式有下列合法的属性:?
startRadius (a float).粒子的开始半径
startRadiusVar (a float). 开始半径变量?
endRadius (a float). 粒子的结束半径?
endRadiusVar (a float).结束半径变量?
rotatePerSecond (a float).围绕一个来源点的每秒旋转角度?
rotatePerSecondVar (a float).每秒旋转角度变量
系统通用属性:
emissionRate duration (a float):每秒有多少粒子被发射
duration (a float):粒子系统生存时间
blendFunc (a ccBlendFunc):用于系统渲染的OpenGL的渲染函数
positionType (a tCCPositionType).:使用kCCPositionTypeFree (默认值)属性可以自由的移动粒子们。或者使用kCCPositionTypeGrouped 让粒子们一组一组的移动。
texture (a CCTexture2D).粒子的纹理
cocos2dx已经为我们提供了非常多的粒子系统效果:
-- CCParticleSystem(所有粒子系统的父类)?
-- CCParticleSystemPoint、CCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性)?
-- CCParticleExplosion :爆炸粒子效果?
-- CCParticleFireworks :烟花粒子效果?
-- CCParticleFire :火焰粒子效果?
-- CCParticleFlower :花束粒子效果
?-- CCParticleGalaxy :星系粒子效果
?-- CCParticleMeteor :流星粒子效果
?-- CCParticleSpiral :漩涡粒子效果
?-- CCParticleSnow :雪粒子效果)?
-- CCParticleSmoke :烟粒子效果
?-- CCParticleSun :太阳粒子效果?
-- CCParticleRain :雨粒子效果
cocos2d-x CCParticleSystem粒子系统
标签:
原文地址:http://www.cnblogs.com/xiaomaomi-199207/p/4918052.html