cocos2d-x CCParticleSystem粒子系统

粒子系统主要分为如下两种模式:??
         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          :雨粒子效果

时间: 2024-08-13 19:55:01

cocos2d-x CCParticleSystem粒子系统的相关文章

CCParticleSystem粒子系统

欢迎转载!转载时请注明出处:http://write.blog.csdn.net/postedit/8124781 第一次接触粒子系统,以前游戏里面的一些小特效,像制作动画一样,是采用一帧一帧的切出来的,由于这种特效,变化无常,切出来的帧,都非常的大,也很耗内存,一下就内存溢出了......呵呵~  主要是以前都没有接触过... 现在接触了,以后游戏就可以用到了...开心! //创建一个CCParticleSystem粒子系统  CCParticleSystem* ignore = CCPart

Cocos2D-Android-1之源码详解:16.ParticleTest

package org.cocos2d.tests; import org.cocos2d.actions.UpdateCallback; import org.cocos2d.actions.base.CCRepeatForever; import org.cocos2d.actions.interval.CCIntervalAction; import org.cocos2d.actions.interval.CCMoveBy; import org.cocos2d.actions.inte

cocos2dx 3.0 简单使用 CocoStudio Animation Editor

原来有一两个人说我不帅的时候,我不以为意,逗我玩而已,后来几乎所有 人都说我不帅,我才真正意识到事态的严重,这社会骗子真是越来越多了... 好吧我承认,这个笑话不好笑,其实我想说的是,做人一定要坚持自己的原则, 哪怕有一天所有人都和你背道而驰,都不要放弃自己当初的梦想,如果有一天, 我们淹没在人海之中,庸碌一生,那是因为我们不够努力,不够勇敢的去面对生活. 每天积累一点点,嗯,满足简单的快乐. ---------------------------------------------------

关于 ls 命令的一个小小的缺陷

原来有一两个人说我不帅的时候,我不以为意,逗我玩而已,后来几乎所有 人都说我不帅,我才真正意识到事态的严重,这社会骗子真是越来越多了... 好吧我承认,这个笑话不好笑,其实我想说的是,做人一定要坚持自己的原则, 哪怕有一天所有人都和你背道而驰,都不要放弃自己当初的梦想,如果有一天, 我们淹没在人海之中,庸碌一生,那是因为我们不够努力,不够勇敢的去面对生活. 每天积累一点点,嗯,满足简单的快乐. ---------------------------------------------------

WebView Android 调用js且需要获取返回结果

原来有一两个人说我不帅的时候,我不以为意,逗我玩而已,后来几乎所有 人都说我不帅,我才真正意识到事态的严重,这社会骗子真是越来越多了... 好吧我承认,这个笑话不好笑,其实我想说的是,做人一定要坚持自己的原则, 哪怕有一天所有人都和你背道而驰,都不要放弃自己当初的梦想,如果有一天, 我们淹没在人海之中,庸碌一生,那是因为我们不够努力,不够勇敢的去面对生活. 每天积累一点点,嗯,满足简单的快乐. ---------------------------------------------------

Sencha app build 出现 missing name after . operator 问题

原来有一两个人说我不帅的时候,我不以为意,逗我玩而已,后来几乎所有 人都说我不帅,我才真正意识到事态的严重,这社会骗子真是越来越多了... 好吧我承认,这个笑话不好笑,其实我想说的是,做人一定要坚持自己的原则, 哪怕有一天所有人都和你背道而驰,都不要放弃自己当初的梦想,如果有一天, 我们淹没在人海之中,庸碌一生,那是因为我们不够努力,不够勇敢的去面对生活. 每天积累一点点,嗯,满足简单的快乐. ---------------------------------------------------

SPOJ GSS5 Can you answer these queries V (线段树)

原来有一两个人说我不帅的时候,我不以为意,逗我玩而已,后来几乎所有 人都说我不帅,我才真正意识到事态的严重,这社会骗子真是越来越多了... 好吧我承认,这个笑话不好笑,其实我想说的是,做人一定要坚持自己的原则, 哪怕有一天所有人都和你背道而驰,都不要放弃自己当初的梦想,如果有一天, 我们淹没在人海之中,庸碌一生,那是因为我们不够努力,不够勇敢的去面对生活. 每天积累一点点,嗯,满足简单的快乐. ---------------------------------------------------

Cocos2d粒子系统二

粒子系统的属性: 粒子的发射速度 重力模式(模式A): 重力 方向 速度 +- 变动 切向加速度 +- 变动 径向加速度 +- 变动 半径模式(模式B): 开始半径 +- 变动 结束半径 +- 变动 旋转 +- 变动 所有模式的公用属性: 生命 开始旋转 结束旋转 开始尺寸 结束尺寸 开始颜色 结束颜色 生命 合成函数 质感 Cocos2d支持由Particle Designer生成的粒子(http://71squared.com/particledesigner(尼玛要$50啊)) “半径模式

iOS_31_cocos2d_粒子系统ParticleSystem

最终效果图: ParticleSystem是基类, ParticleSystem的唯一一个直接子类是:ParticleSystemQuad ParticleSystemQuad下面又有n多个子类 当需要自定义粒子系统时,用到的是ParticleSystemQuad,参数是:第3方软件生成的plist 下面是的粒子系统的继承结构图 下面介绍一下[Particle Designer] 生成两个文件,一个小纹理,一个plist 其中plist文件结构如下: 自定义粒子特效,使用上面生成的plist文件