本文包括三种方法实现粒子系统:
1,使用Cocos2d-x提供的CCParticleSystem来实现
2,使用粒子编辑器生成plist文件,再用cocos2dx提供的CCParticleSystemQuad实现
3,利用Cocos2d-x已经做好的粒子效果:例如
CCParticleFire CCParticleFireworks CCParticleSun CCParticleGalaxy
CCParticleFlower CCParticleMeteor CCParticleSpiral CCParticleExplosion CCParticleSmoke
以下转自:http://blog.csdn.net/zhy_cheng/article/details/8289683
太原市今天下雪了,8点出门,银装素裹,分外妖娆。今天就来主打下雪的效果,实现下雪效果需要使用粒子系统。
这张照片是刚照的,看看太原的雪景吧
先来说说我对粒子系统的了解吧,粒子系统是为了模仿自然世界的真实显现,比如说烟,雾,火花,闪电,火焰,下雪。粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子状态。大量的粒子叠加就可以产生我们需要的特效。
在Cocos2d-x中,实现粒子效果可以有三种方法,下面我一一道来。
1.代码自定义
使用这种方法,我们需要自己写代码,使用Cocos2d-x提供的CCParticleSystem来实现,使用这种方法,可以实现我们想要的任意效果。
这段文字的前面是雪花的图片,大家可能看不见,雪花是白的,背景也是白的。
下面是使用的背景图片:
下面是在这张图片上下雪的代码:
- CCParticleSystemQuad *m_emitter=new CCParticleSystemQuad();
- m_emitter->initWithTotalParticles(900);
-
- m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("snow.png"));
-
- m_emitter->setDuration(-1);
-
- 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);
代码中的注释写的很是清楚,还是来看看下雪的效果吧:
2.使用粒子编辑器
粒子编辑器可以很方便的生成我们需要的效果,在Windows平台上,现在免费的只有一款软件ParticleEditor。
下载地址:点击下载。
先使用这个粒子编辑器生成我需要的下雪的plist文件,然后将plist文件和图片问价一起复制到Resources文件中。
然后在Cocosd-x中就可以使用了。
下面是实现的代码:
- CCParticleSystemQuad* mSystem = new CCParticleSystemQuad();
- mSystem->initWithFile("zhycheng.plist");
- mSystem->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("snow.png")
- ,CCRectMake(0,0,32,32));
- mSystem->setBlendAdditive(true);
- mSystem->setPosition(ccp(400,670));
- addChild(mSystem);
下面是实现的效果:
哈哈,这是我没有编辑好,就这效果。
3.使用Cocos2d-x提供的效果
Cocos2d-x为我们定义的一些已经做好的粒子效果,我们只需要指定图片就行了,具体有哪些,现在就写下面的这几个吧,刚才官网上不去,以后再编辑吧。
CCParticleFire CCParticleFireworks CCParticleSun CCParticleGalaxy
CCParticleFlower CCParticleMeteor CCParticleSpiral CCParticleExplosion CCParticleSmoke
我继续用Cocos2d-x来实现下雪的效果吧:
- CCParticleSnow *snow=CCParticleSnow::create();
- snow->setPosition(ccp(400,670));
- snow->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("snow.png"),CCRectMake(0,0,32,32));
- addChild(snow);
这里面一定要指定图片。
下面接着看效果吧:
这个效果才是最好的。