在粒子效果中,通常存在一个对所有粒子进行统一调度的引擎,称作粒子系统(partical system),它负责粒子的产生,随时间改变粒子的状态,以及最后回收不再需要的粒子。如果按照粒子系统的维数来区分,粒子系统可以分为二维粒子系统与三维粒子系统两种。
Cocos2d-x为我们提供的粒子系统由ParticleSystem类实现。与其他的粒子引擎一样,ParticleSystem实现了对粒子的控制与调度,对粒子的操作包括如下几种。
产生粒子:这部分也被称作粒子发射器(emitter)。
更新粒子状态:引擎会随时间更新粒子的位置、速度以及其他状态。
回收无效粒子:当粒子的生存周期结束后,就会被系统回收。
因此,为了创建一个粒子效果,我们需要定义粒子如何产生以及状态如何改变。
ParticleSystem提供了多种初始化方式。我们可以通过指定粒子数量来创建一个粒子系统,然后需要设置粒子的外观(通常为一张小纹理)、发射方式与运动方式。创建一个全新的粒子系统通常较为烦琐,大多数情况下,我们更乐意把粒子系统的参数保存在文件中,而Cocos2d-x就是使用Plist文件来保存这些参数的。暂时抛开粒子效果文件Plist不谈,如果我们已经拥有一个粒子效果文件,就可以利用ParticleSystem的初始化方法直接从文件中导入一个粒子效果,相关代码如下:
bool initWithFile(const char *plistFile)
static ParticleSystem* create(const char *plistFile)
实际上,引擎已经内置了若干粒子效果,它们作为粒子系统的样例,只需要简单的几行代码就可以创建,正如Action为我们做的一样。这些粒子效果的代码放在Cocos2d-x引擎目录下"particle_nodes"目录中的"ParticleSystem.cpp"文件中。
内置粒子系统
内置的11粒子系统说明如下:
ParticleExplosion。爆炸粒子效果,属于半径模式。
ParticleFire。火焰粒子效果,属于重力径模式。
ParticleFireworks。烟花粒子效果,属于重力模式。
ParticleFlower。花粒子效果,属于重力模式。
ParticleGalaxy。星系粒子效果,属于半径模式。
ParticleMeteor。流星粒子效果,属于重力模式。
ParticleSpiral。漩涡粒子效果,属于半径模式。
ParticleSnow。雪粒子效果,属于重力模式。
ParticleSmoke。烟粒子效果,属于重力模式。
ParticleSun。太阳粒子效果,属于重力模式。
ParticleRain。雨粒子效果,属于重力模式。
这11种粒子系统每一个都有如下两个create函数,通过create函数可以创建粒子对象。
static ParticleExplosion * create ()
static ParticleExplosion * createWithTotalParticles (int numberOfParticles)
其中createWithTotalParticles 函数中的numberOfParticles是粒子的初始化个数。
还有这11种粒子的属性,根据它的发射模式不同也会有所不同。