1、粒子系统的原理:
在引擎中存在一个粒子池,存放着待激活的粒子,发射器每次从粒子池中取出一个粒子,然后计算赋予粒子的初始属性(速度、大小、方向、生存时间等)后,将粒子发射出去,粒子被发射出去后,会不断地刷新来修正它的属性,当粒子的生存时间结束后,粒子就会死亡,然后重新被粒子池回收,等待下一次激活。
2、粒子的主要属性:
(a)duration 发射器生命时间,单位为秒,-1表示永久播放
(b)emissionRate 每秒喷发的粒子数目
(c)emitterMode 喷发器模式,有重力模式(GRAVITY)和半径模式(RADIUS)两种
(d)totalParticles 场景中存在的最大粒子数目,往往与emissionRate配合使用
(e)isAutoRemoveOnFinish 粒子结束时是否自动删除
生命属性:
(a)life 粒子的生存时间
(b)lifeVar 粒子生命变化范围
大小属性:
(a)startSize 粒子的初始大小
(b)startSizeVar 粒子初始大小的变化范围
(c)endSize 粒子结束时的大小,-1表示和初始大小一致
(d)endSizeVar 粒子结束大小的变化范围
角度属性:
(a)angle 粒子角度
(b)angleVar 粒子角度变化范围
颜色属性:
(a)startColor 粒子初始颜色
(b)startColorVar 粒子初始颜色变化范围
(c)endColor 粒子结束颜色
(d)endColorVar 粒子结束颜色的变化范围
位置属性:
(a)positionType 粒子位置类型有三种:
自由模式(FREE):相对于屏幕自由,不会随粒子节点移动而移动
相对模式(RELATIVE):相对于绑定的节点静止,粒子发射器会随着节点的移动而移动
和打组模式(GROUPED):相对于发射点,粒子随发射器移动而移动
(b)posVar 发射器位置的变化范围
3、粒子效果的创建方法:
方法一:使用cocos2dx引擎提供的效果
auto snow = ParticleSnow::create();
snow->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png"));
snow->setPosition(Point(0,400));
this->addChild(snow);
方法二:自定义粒子
auto emitter = ParticleSystemQuad::createWithTotalParticles(50);
emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png"));
emitter->setDuration(-1);//不断地发射粒子
emitter->setPosition(Point(400,400));
emitter->setEmitterMode(ParticleSystem::Mode::GRAVITY);
emitter->setLife(10);//设置粒子属性
this->addChild(emitter);
方法三:使用plist文件
auto snow = ParticleSystemQuad::create("snow.plist");
snow->setDuration(-1);
snow->setPosition(Point(200,200));
this->addChild(snow);