cocos2dx 粒子系统理解

来源:互联网 发布:软件技术职称 编辑:程序博客网 时间:2024/05/22 03:25

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);


原创粉丝点击