一、简介
在大自然中,随处可见一些大规模运动的物体,例如下雨时的雨点、下雪时的雪花、爆炸时的火花,甚至旋转的星系、扩散的云雾等。当我们希望在游戏中模拟这些大规模运动的物体时,通常有如下两种方法。
Cocos2d - x中粒子系统由CCParticleSystem类实现,CCParticleSystem实现了对粒子的控制与调度。
对粒子的操作包括:
产生粒子:也称作粒子发射器。
更新粒子状态:引擎会随时更新粒子的位置、速度及其他状态。
回收无效粒子:当粒子生存周期结束后,被系统回收。
二、内置粒子系统
Cocos2d-x内置11种粒子效果,其类派生关系如下:
setTexture():设置特效贴图。
setAutoRemoveOnFinish(bool):设置自动释放true为自动释放。
(一)爆炸效果:CCParticleExplosion
实例;
CCParticleExplosion * explosion = CCParticleExplosion::create();
explosion->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
explosion->setPosition(ccp(200, 200));
addChild(explosion);
(二)火焰效果:CCParticleFire
实例:
CCParticleFire * fire = CCParticleFire::create();
fire->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
fire->setPosition(ccp(200, 200));
addChild(fire);
(三)花束效果:CCParticleFlower
实例:
CCParticleFlower* flower = CCParticleFlower::create();
flower->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
flower->setPosition(ccp(200, 200));
addChild(flower);
(四)烟花效果:CCParticleFireworks
实例:
CCParticleFireworks* fireworks = CCParticleFireworks::create();
fireworks->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
fireworks->setPosition(ccp(200,200));
addChild(fireworks);
(五)星系效果:CCParticleGalaxy
实例:
CCParticleGalaxy* galaxy = CCParticleGalaxy::create();
galaxy->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
galaxy->setPosition(ccp(200,200));
addChild(galaxy);
(六)流星效果:CCParticleMeteor
实例:
CCParticleMeteor* meteor = CCParticleMeteor::create();
meteor->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
meteor->setPosition(ccp(200, 200));
addChild(meteor);
(七)下雨效果:CCParticleRain
实例:
CCParticleRain* rain = CCParticleRain::create();
rain->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
rain->setPosition(ccp(200,200));
addChild(rain);
(八)烟雾效果:CCParticleSmoke
实例:
CCParticleSmoke* smoke = CCParticleSmoke::create();
smoke->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
smoke->setPosition(ccp(200, 200));
addChild(smoke);
(九)下雪效果:CCParticleSnow
实例:
CCParticleSnow* snow = CCParticleSnow::create();
snow->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
snow->setPosition(ccp(200,200));
addChild(snow);
(十)漩涡效果:CCParticleSpiral
实例:
CCParticleSpiral* spiral = CCParticleSpiral::create();
spiral->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
spiral->setPosition(ccp(200, 200));
addChild(spiral);
(十一)太阳效果:CCParticleSun
实例:
CCParticleSun* sun = CCParticleSun::create();
sun->setTexture(CCTextureCache::sharedTextureCache()->addImage("huangjinpao.png"));
sun->setPosition(ccp(200, 200));
addChild(sun);
三、使用粒子编辑器编辑的粒子效果
实例:
CCParticleSystemQuad *snow = new CCParticleSystemQuad();
snow->initWithFile("gas_explode.plist");
snow->setPosition(ccp(200,200));
addChild(snow);
plist文件可以通过例子编辑器获得。