Cocos2d-X 雪花效果制作

1.首先定义一个 Snowflake 效果的方法
Snowflake.h
        static void createParticleSnowRing(cocos2d::CCPoint position, Engine::String image ,int radia, CCNode* parentNode);
Snowflake.cpp
        void ParticleEffects::createParticleSnowRing(cocos2d::CCPoint position, Engine::String image ,int radia, CCNode* parentNode)   {
        CCParticleSnow * particle = CCParticleSnow::node();//注意新版本中create()代替了node()
        //自定义雪花图片
        particle->setTexture(CCTextureCache::sharedTextureCache()->addImage(image.c_str()));
        //粒子总数
        particle->setTotalParticles(400);
        //下雪时间
        particle->setDuration(30);
        //雪花开始大小   
        particle->setStartSize(10);
        //雪花大小浮动
        particle->setStartSizeVar(5);
        //雪花结束大小
        particle->setEndSize(5);
        particle->setEndSizeVar(0);
        //初始速度   
        particle->setSpeed(200);
        particle->setSpeedVar(100);
        //下降速度 y负数表示下落 x负数表示向西吹
        particle->setGravity(ccp(-20,-70));
        //每个雪花生命时间
        particle->setLife(20.0f);
        particle->setLifeVar(2.0f);
        //            particle->setPosition(ccp(240, 320));
        //释放雪花速度 particle.emissionRate = particle.totalParticles/particle.life;
        particle->setEmissionRate(100); 
        CCSize a = CCDirector::sharedDirector()->getWinSize();
        //动画完成后自动从上层layer中移除粒子
        particle->setAutoRemoveOnFinish(true);
        //释放粒子位置如果你想在调用的时候设置位置,那么可以注视下面的代码
        parentNode->addChild(particle,3);
    }   
2.在你想调用的地方写下面的代码即可:
        Engine::String image =Engine::StringUtil::format("Snowflake%d.png",arc4random()%7 + 1 );
        CCSizes =CCDirector::sharedDirector()->getWinSize();
        int x = s.width;
        int y = s.height;
        CCPoint position = ccp(arc4random() % x,arc4random() % y);
        this-> createExplodingRing(position, image,arc4random()%30+50,this);
3.如果你单独写一个类的话,这么调用
        EffectsScene=newParticleEffects();
        EffectsScene-> createExplodingRing(position, image, arc4random()%30+50,this);
4.直接用在用
       
        CCParticleSnow* particle =CCParticleSnow::node();
        particle->setTexture(CCTextureCache::sharedTextureCache()->addImage("snowflakes.png"));
        particle->setTotalParticles(400);
        particle->setDuration(30);
        particle->setStartSize(10);
        particle->setStartSizeVar(5);
        particle->setEndSize(5);
        particle->setEndSizeVar(0); 
        particle->setSpeed(200);
        particle->setSpeedVar(100);
        particle->setGravity(ccp(-20,-70));
        particle->setLife(20.0f);
        particle->setLifeVar(2.0f);
        particle->setEmissionRate(100); 
        CCSizea =CCDirector::sharedDirector()->getWinSize();
        particle->setAutoRemoveOnFinish(true);
        particle->setPosition(CCPoint(a.width/2,a.height+10));
        particle->setPosVar(ccp(a.width/2+50,0));
        this->addChild(particle,20);

5.一些效果:
        -- CCParticleExplosion         (爆炸粒子效果)
        -- CCParticleFireworks       (烟花粒子效果)
        -- CCParticleFire                   (火焰粒子效果)
        -- CCParticleFlower              (花束粒子效果)
        -- CCParticleGalaxy             (星系粒子效果)
        -- CCParticleMeteor            (流星粒子效果)
        -- CCParticleSpiral              (漩涡粒子效果)
        -- CCParticleSnow               (雪粒子效果)
        -- CCParticleSmoke             (烟粒子效果)
        -- CCParticleSun                  (太阳粒子效果)
        -- CCParticleRain                 (雨粒子效果)

效果显示图如下:

                                                    雪花效果

 

                                  太阳粒子效果


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值