cocos2d-x: 粒子系统 [2.0.2]

粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子状态。大量的粒子叠加就可以产生我们需要的特效。

cocos2d-x引擎中,粒子系统使用CCParticleSystem来表示,又分为两大类,重力式粒子系统CCParticleSystemPoint和放射式粒子系统CCParticleSystemQuad,两者在功能上略有不同,CCParticleSystemQuad支持围绕轴线旋转,CCParticleSystemQuad支持更多粒子对象和缩放,重力式故名思义,系统中存在重力,重力大小可以自己定义,包括的参数有:重心,速度,方向,尺寸,存在时间,颜色,绕自己轴心旋转角度,角加速度,线加速度,半径,分组模式(是否随重心移动),放射性系统恰恰相反,不存在重力,包括的参数有:重心,方向,尺寸,存在时间,颜色,绕自己轴心旋转角度,绕重心为轴心旋转角度,半径,分组模式(是否随重心移动)。

过程分为以下几步:

第一步 建立粒子系统
 m_emitter = new CCParticleSystemQuad();
第二步 产生粒子对象
 m_emitter->initWithTotalParticles(50);
第三步 设置参数
// radial半径
 m_emitter->setRadialAccel(-120);
 m_emitter->setRadialAccelVar(0);

//speed 速度

 m_emitter->setSpeed(160);
 m_emitter->setSpeedVar(0);
第四步 设置到背景上

 m_background->addChild(m_emitter, 10);
另外引擎还支持一些粒子编辑工具
另外引擎内还实现了一些自带粒子系统
CCParticleFire CCParticleFireworks CCParticleSun CCParticleGalaxy CCParticleFlower CCParticleMeteor CCParticleSpiral CCParticleExplosion CCParticleSmoke CCParticleSnow CCParticleRain

基本使用方法类似:

m_emitter = CCParticleFire::create();
m_emitter->retain(); 
m_background->addChild(m_emitter, 10);
m_emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage(s_fire) );//.pvr");
CCPoint p = m_emitter->getPosition();
m_emitter->setPosition( CCPointMake(p.x, 100) );
setEmitterPosition();

void ParticleDemo::setEmitterPosition()
{
	CCSize s = CCDirector::sharedDirector()->getWinSize();
	if(m_emitter != NULL)
	{
		m_emitter->setPosition(CCPointMake(s.width/2,s.height/2));
 	}
}






你可能感兴趣的:(cocos2d-x: 粒子系统 [2.0.2])