cocos2d-x CCParticleSystem粒子系统

cocos2d-x CCParticleSystem粒子系统,第1张

概述粒子系统主要分为如下两种模式:          1.重力式粒子系统(CCParticleSystemPoint  ): 这种粒子存在重力,好像地球的万有引力一样,所有的粒子都会收到重力的约束,当然重力的大小是可以自己定义的            2.放射性粒子系统(CCParticleSystemQuad):: 这种粒子不存在重力,因此粒子好像都在空中,不再收到地球万有引力的作用   @1——根

粒子系统主要分为如下两种模式:


1.重力式粒子系统(CCParticleSystemPoint ): 这种粒子存在重力,好像地球的万有引力一样,所有的粒子都会收到重力的约束,当然重力的大小是可以自己定义的

2.放射性粒子系统(CCParticleSystemQuad):: 这种粒子不存在重力,因此粒子好像都在空中,不再收到地球万有引力的作用

@1——根据 pList 文件创建粒子系统:

CCParticleSystemQuad*emitter1=CCParticleSystemQuad::create("Particle/BurstPipe.pList"); emitter1->setposition(ccp(size.wIDth/2,size.height/2));//设置发射粒子的位置 emitter1->setautoRemoveOnFinish(true);//完成后制动移除 emitter1->setDuration(10);//设置粒子系统的持续时间秒 this->addChild(emitter1,1);

@2——不使用pList 文件创建粒子系统

2.1重力式粒子系统/CCParticleSystemPoint 使用代码如下:

2.1.1】创建一个Point粒子系统 CCParticleSystemPoint*m_emitter=newCCParticleSystemPoint(); 2.1.2】产生300个粒子对象 m_emitter->initWithTotalParticles(300); 2.1.3】设置粒子对象以及粒子系统的相关参数 //0.设置粒子的图像,粒子虽小但是还需要有自己的图像,如果没有texture属性引擎会默认一个图像 m_emitter->setTexture(CCTextureCache::sharedTextureCache("test.png"));//CCTextureCache::sharedTextureCache()->addImage("a.png")); //1.设置粒子系统的持续时间 m_emitter->setDuration(-1); //2.设置重力方向 m_emitter->setGravity(CCPointZero); //3.设置角度,角度变化率 m_emitter->setAngle(0); m_emitter->setAngleVar(360); //4.设置径向加速度,径向加速度变化率 m_emitter->seTradialAccel(70); m_emitter->seTradialAccelVar(10); //5.设置切向加速度,切向加速度变化率 m_emitter->setTangentialAccel(80); m_emitter->setTangentialAccelVar(0); //6.设置运动速度,运动速度变化率 m_emitter->setSpeed(50); m_emitter->setSpeedVar(10); //7.设置粒子位置,粒子位置变化率 m_emitter->setposition(CCPointMake(s.wIDth/2,s.height/2)); m_emitter->setPosVar(CCPointzero); //8.设置粒子存在时间,存在时间变化率 m_emitter->setlife(2.0f); m_emitter->setlifeVar(0.3f); //9.设置粒子开始时候颜色,粒子开始时颜色变化率 m_emitter->setStartcolor({0.5f,0.5f,0.5f});//emitter1->setStartcolor(ccc4f(1,1));//设置粒子RGBA值 m_emitter->setStartcolorVar({0.5f,1.0f}); //10.设置粒子结束时候颜色,粒子结束时颜色变化率 m_emitter->setEndcolor({0.1f,0.1f,0.2f}); m_emitter->setEndcolorVar({0.1f,0.2f}); //11.设置粒子开始时候大小,粒子开始时大小变化率 m_emitter->setStartSize(1.0f); m_emitter->setStartSizeVar(1.0f); //12.设置粒子结束时候大小,粒子结束时大小变化率 m_emitter->setEndSize(32.0f); m_emitter->setEndSizeVar(8.0f); //13.设置每秒产生的粒子数 m_emitter->setEmissionRate(m_emitter->getTotalParticles()/m_emitter->getlife());//每秒产生粒子数=粒子总数/存活时间; 2.1.4】将这个粒子系统设置到背景层上: m_background->addChild(m_emitter,1);

2.2【放射性粒子系统/CCParticleSystemQuad】

2.2.1】创建一个Quad粒子系统 CCParticleSystemQuad*m_emtter=newCCParticleSystemQuad(); 2.2.2】产生300个粒子对象 2.2.3】设置粒子对象以及粒子系统的相关参数 12345678910111213和重力式粒子系统一样唯一不同的就是参数 下面增加发射型粒子系统特有的属性 //14.设置粒子开始时候自旋转的速度,以及变化率: m_emitter->setStartSpin(0); m_emitter->setStartSpinVar(0); //15.设置粒子结束时候自旋转的速度,以及变化率: m_emitter->setEndSpin(0); m_emitter->setEndSpinVar(2000); 2.2.4】将m_emitter设置到m_background这个层(Layer)上面 重力vs半径模式

重力模式能够让粒子飞向或者远离一个中心点。这种的优势是它允许一个动态的,组织的效果。你可以用如下代码设置重力模式:

重力模式

m_emitter->setEmitterMode(kCCParticleModeGravity); m_emitter->setGravity(CCPointZero);

在重力模式中,以下属性是合法的:

gravity(Point)。粒子系统的重力。

speed(float)。粒子们射出的速度。

speedVar(float)速度变量

tangencialAccel(float)粒子们的正切加速度

tangencialAccelVar(float)粒子们正切加速度的变量

radialAccel(float)粒子们的半径加速度。

radialAccelVar(float)粒子们半径加速度的变量

半径模式

半径模式能够让粒子在圆中旋转。也可以创造螺旋模式能让粒子向屏幕里屏幕外飞。你可以设置半径模式用下面的几行代码:

m_emitter->setEmitterMode(kCCParticleModeRadius); //设置开始半径和结束半径 m_emitter->setStarTradius(100); m_emitter->setStarTradiusVar(0); m_emitter->setEndRadius(kCCParticleStarTradiusEqualToEndRadius); m_emitter->setEndRadiusVar(0);

// 设置环型运动模式的每秒旋转角度及相应的随机加成范围值
m_emitter->setRotatePerSecond(180);m_emitter->setRotatePerSecondVar(0);

半径模式有下列合法的属性:
starTradius (a float).粒子的开始半径

starTradiusVar (a float). 开始半径变量
endRadius(a float). 粒子的结束半径
endRadiusVar (a float).结束半径变量
rotatePerSecond (a float).围绕一个来源点的每秒旋转角度
rotatePerSecondVar (a float).每秒旋转角度变量

粒子们的常规属性:

startSize:粒子的初始尺寸(像素值)
startSizeVar
endSize:粒子的结束尺寸(如果你想让粒子的开始大小同结束大笑相同,就用一下kCCParticleStartSizeEqualToEndSize
endSizeVar
startcolor :粒子开始颜色(cccolor4F)
startcolorVar
endcolor :粒子结束颜色
endcolorVar
startSpin:仅用在CCParticleSystemQuad中,起始螺旋度
startSpinVar
endSpin:仅用在CCParticleSystemQuad中,结束螺旋度
endSpinVar
life粒子的生命生存时间,单位是秒
lifeVar
angle:粒子开始角度,float
angleVar
positon:CCPoint粒子位置
positonVar
centerOfGravity :CGPoint

系统通用属性:

emissionRate duration (a float):每秒有多少粒子被发射

duration (a float):粒子系统生存时间

blendFunc (a ccBlendFunc):用于系统渲染的OpenGL的渲染函数

positionType (a tCCpositionType).:使用kCCpositionTypeFree (默认值)属性可以自由的移动粒子们。或者使用kCCpositionTypeGrouped 让粒子们一组一组的移动。

texture (a CCTexture2D).粒子的纹理

cocos2dx已经为我们提供了非常多的粒子系统效果:

-- CCParticleSystem(所有粒子系统的父类) -- CCParticleSystemPoint、CCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性) -- CCParticleExplosion :爆炸粒子效果 -- CCParticleFireworks :烟花粒子效果 -- CCParticleFire :火焰粒子效果 -- CCParticleFlower :花束粒子效果 -- CCParticlegalaxy :星系粒子效果 -- CCParticleMeteor :流星粒子效果 -- CCParticleSpiral :漩涡粒子效果 -- CCParticleSNow :雪粒子效果) -- CCParticleSmoke :烟粒子效果 -- CCParticleSun :太阳粒子效果 -- CCParticleRain :雨粒子效果

总结

以上是内存溢出为你收集整理的cocos2d-x CCParticleSystem粒子系统全部内容,希望文章能够帮你解决cocos2d-x CCParticleSystem粒子系统所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1013046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存