Cocos2d-x入门粒子系统详细讲解

14 篇文章 0 订阅
11 篇文章 0 订阅
在游戏中,经常要实现一些真实的效果,这些效果(如,火焰,雪花等)都是由大量微粒组合而形成的。为了在游戏中实现这种效果,我们必须引进粒子系统,粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子状态。大量的粒子叠加就可以产生我们需要的特效。 

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

 过程分为以下几步 第一步建立粒子系统 

m_emitter = new CCParticleSystemQuad(); 

第二步产生粒子对象 

m_emitter->initWithTotalParticles(50); 

第三步设置参数 // radial半径 

m_emitter->setRadialAccel(-120); m_emitter->setRadialAccelVar(0); 

第四步设置到背景上 

m_background->addChild(m_emitter, 10); 另外引擎还支持一些粒子编辑工具 另外引擎内还实现了一些自带粒子系统 
CCParticleFire CCParticleFireworks CCParticleSun CCParticleGalaxy CCParticleFlower CCParticleMeteor CCParticleSpiral CCParticleExplosion CCParticleSmoke CCParticleSnow CCParticleRain 基本使用方法类似 
m_emitter = CCParticleFire::node(); 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) );


举个详细例子

ocos2d::CCParticleSystemQuad *mSystem=newCCParticleSystemQuad();

            mSystem->initWithFile("Particle.plist");//文件可以通过粒子编辑器获得

            //mSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));//加载图片纹理

            //没有特殊的要求也可以用上面的方法加载图片纹理

            mSystem->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("Particle.png")

                                        ,CCRectMake(0,0,32,32));//加载图片,第一个参数是纹理,第二个参数是选择图片上的位置


             mSystem->setPosition(float x,float y);//粒子效果产生的位置

            mSystem->setDuration(0.5f);//设置动画的持续时间

            mSystem->setLife(0.3f);

            addChild(mSystem);

            mSystem->setBlendAdditive(true);//是否混合







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值