粒子系統和11種系統自帶的粒子特效



粒子系統有兩部分組成:粒子粒子發射器
粒子發射器共同屬性:
TotalParticles 粒子總數
Duration 發射時間
EmissionRate 發射速率
EmitterMode 發射器模式 Gravity(重力) 和 Radius(半徑)
Position 發射器位置
PosVar 發射器位置浮動
PositionType 設置粒子與發射器的相對位置
  三種模式: 自由模式:FREE(粒子不與發射器聯系)
    相對模式:RELATIVE(粒子發射器隨粒子節點的移動而移動)
      相對模式:GROUPED(粒子群隨發射器的移動而移動)
Texture 粒子紋理圖片

重力發射器屬性:
Gravity: 重力
Speed: 速度
SpeedVar: 速度變化率
RadialAccel: 徑向加速度
RadialAccelVar: 徑向加速度變化率
TangentialAccel: 切向加速度

TangentialAccelVar: 切向加速度變化率

半徑發射器屬性:
StartRadius: 起始半徑
StartRadiusVar: 起始半徑浮動值
EndRadius: 結束半徑
EndRadiusVar: 結束半徑浮動值
RotatePerSecond: 旋轉角速度
RotatePerSecondVar: 旋轉角速度變化值

粒子屬性:
Life: 生存時間
LifeVar:
StartSize: 起始大小
StartSizeVar:
EndSize: 結束大小
EndSizeVar:
StartColor: 開始顏色
StartColorVar:
EndColor: 結束顏色
EndColorVar:
StartSpin: 起始旋轉角度
StartSpinVar:
EndSpin: 結束旋轉角度
EndSpinVar:
Angle: 發射角度
AngleVar:

粒子系統的使用:
一. 使用系統自帶的效果
auto snow = ParticleSnow::create(); snow->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png")); snow->setPosition(Point(200,200)); this->addChild(snow);
系統自帶的十一種效果如下:

 1. 雪花特效

ParticleSystem* ps = ParticleSnow::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png")); ps->setPosition(Point(200,200));//生成的雪花的起始位置 this->addChild(ps,10);

2. 煙花效果 
ParticleSystem* ps = ParticleFireworks::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);

3. 下雨效果 
ParticleSystem* ps = ParticleRain::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
4. 煙霧 
ParticleSystem* ps = ParticleSmoke::create();//效果實在不咋地 ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
5、爆炸 
ParticleSystem* ps = ParticleExplosion::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
6、螺旋 
ParticleSystem* ps = ParticleSpiral::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
7、流星(用彗星來描述會更貼切一點,因為它拖着一條長長的尾巴) 
ParticleSystem* ps = ParticleMeteor::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
8、星雲 
ParticleSystem* ps = ParticleGalaxy::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
9、太陽 
ParticleSystem* ps = ParticleSun::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);
10、火焰 
ParticleSystem* ps = ParticleFire::create(); ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png")); ps->setPosition(Point(200,200)); this->addChild(ps,10);

11.花束效果

    ParticleSystem* particleSystem = ParticleFlower::create();  

    particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));  

    addChild(particleSystem); 

 二. 代碼自定義粒子系統
    auto m_emitter = new ParticleSystemQuad();
    m_emitter->initWithTotalParticles(900);//900個粒子對象
    m_emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("snow1.png"));
    //設置發射粒子的持續時間-1表示一直發射, 0沒有意義, 其他值表示持續時間
    m_emitter->setDuration(-1);
    //設置中心方向, 這個點是相對發射點, x正方向為右, y正方向為上
    m_emitter->setGravity(Point(0, -40));
    //設置角度, 角度的變化率 (Var 是浮動值, 若初始值是5, var是1, 那么會在4~6范圍內浮動)
    m_emitter->setAngle(0);
    m_emitter->setAngleVar(360);
    //設置運動速度, 運動速度的變化率
    m_emitter->setSpeed(50);
    m_emitter->setSpeedVar(10);
    //設置徑向加速度, 徑向加速度的變化率
    m_emitter->setRadialAccel(50);
    m_emitter->setRadialAccelVar(0);
    //設置粒子的切向加速度, 切向加速度的變化率
    m_emitter->setTangentialAccel(30);
    m_emitter->setTangentialAccelVar(0);
    

    //設置粒子的初始位置, 位置的變化率
    m_emitter->setPosition(visibleSize.width, visibleSize.height);
    m_emitter->setPosVar(Point(visibleSize.width, 0));
    //設置粒子生命, 生命的變化率
    m_emitter->setLife(4);
    m_emitter->setLifeVar(2);
    //設置粒子開始的自旋轉速度, 開始自旋轉速度的變化率
    m_emitter->setStartSpin(90);
    m_emitter->setStartSpinVar(120);
    //設置結束的時候的自旋轉以及自旋轉的變化率
    m_emitter->setEndSpin(90);
    m_emitter->setEndSpinVar(160);
    Color4F cc;
    cc.a = 1.0f;
    cc.b = 255.0f;
    cc.g = 255.0f;
    cc.r = 255.0f;
    Color4F 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);
 
        

三. 使用plist文件

    auto crash = ParticleSystemQuad::create("explode.plist");
    crash->setDuration(-1);
    crash->setPosition(Point(300, 200));
    this->addChild(crash);

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM