【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果

【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果,第1张

概述原创文章,转载请注明出处:http://www.voidcn.com/article/p-vzftvdqu-o.html 太原市今天下雪了,8点出门,银装素裹,分外妖娆。今天就来主打下雪的效果,实现下雪效果需要使用粒子系统。 这张照片是刚照的,看看太原的雪景吧   先来说说我对粒子系统的了解吧,粒子系统是为了模仿自然世界的真实显现,比如说烟,雾,火花,闪电,火焰,下雪。粒子系统中需要包括四个部分:

原创文章,转载请注明出处:http://www.jb51.cc/article/p-vzftvdqu-o.html

太原市今天下雪了,8点出门,银装素裹,分外妖娆。今天就来主打下雪的效果,实现下雪效果需要使用粒子系统。

这张照片是刚照的,看看太原的雪景吧

先来说说我对粒子系统的了解吧,粒子系统是为了模仿自然世界的真实显现,比如说烟,雾,火花,闪电,火焰,下雪。粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子状态。大量的粒子叠加就可以产生我们需要的特效。

在Cocos2d-x中,实现粒子效果可以有三种方法,下面我一一道来。

1.代码自定义

使用这种方法,我们需要自己写代码,使用Cocos2d-x提供的CCParticleSystem来实现,使用这种方法,可以实现我们想要的任意效果。

这段文字的前面是雪花的图片,大家可能看不见,雪花是白的,背景也是白的。

下面是使用的背景图片:

下面是在这张图片上下雪的代码:

[cpp] view plain copy print ? CCParticleSystemQuad*m_emitter=newCCParticleSystemQuad(); m_emitter->initWithTotalParticles(900);//900个粒子对象 //设置图片 m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("sNow.png")); //设置发射粒子的持续时间-1表示一直发射,0没有意义,其他值表示持续时间 m_emitter->setDuration(-1); //设置中心方向,这个店是相对发射点,x正方向为右,y正方向为上 m_emitter->setGravity(CCPoint(0,-240)); //设置角度,角度的变化率 m_emitter->setAngle(90); m_emitter->setAngleVar(360); //设置径向加速度,径向加速度的变化率 m_emitter->seTradialAccel(50); m_emitter->seTradialAccelVar(0); //设置粒子的切向加速度,切向加速度的变化率 m_emitter->setTangentialAccel(30); m_emitter->setTangentialAccelVar(0); //设置粒子的位置,位置的变化率 m_emitter->setposition(CCPoint(400,500)); m_emitter->setPosVar(CCPoint(400,0)); //设置粒子声明,生命的变化率 m_emitter->setlife(4); m_emitter->setlifeVar(2); //设置粒子开始的自旋转速度,开始自旋转速度的变化率 m_emitter->setStartSpin(30); m_emitter->setStartSpinVar(60); //设置结束的时候的自旋转以及自旋转的变化率 m_emitter->setEndSpin(60); m_emitter->setEndSpinVar(60); cccolor4Fcc; cc.a=1.0f; cc.b=255.0f; cc.g=255.0f; cc.r=255.0f; cccolor4Fcc2; cc2.a=0; cc2.b=0; cc2.g=0; cc2.r=0; //设置开始的时候的颜色以及颜色的变化率 m_emitter->setStartcolor(cc); m_emitter->setStartcolorVar(cc2); //设置结束的时候的颜色以及颜色的变化率 m_emitter->setEndcolor(cc); m_emitter->setEndcolorVar(cc2); //设置开始时候粒子的大小,以及大小的变化率 m_emitter->setStartSize(30); m_emitter->setStartSizeVar(0); //设置粒子结束的时候的大小,以及大小的变化率 m_emitter->setEndSize(20.0f); m_emitter->setEndSizeVar(0); //设置每秒钟产生粒子的数目 m_emitter->setEmissionRate(100); addChild(m_emitter);
			CCParticleSystemQuad *m_emitter=new CCParticleSystemQuad();			m_emitter->initWithTotalParticles(900);//900个粒子对象			//设置图片			m_emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("sNow.png"));			//设置发射粒子的持续时间-1表示一直发射,0没有意义,其他值表示持续时间			m_emitter->setDuration(-1);			//设置中心方向,这个店是相对发射点,x正方向为右,y正方向为上			m_emitter->setGravity(CCPoint(0,-240));						//设置角度,角度的变化率			m_emitter->setAngle(90);			m_emitter->setAngleVar(360);			//设置径向加速度,径向加速度的变化率			m_emitter->seTradialAccel(50);			m_emitter->seTradialAccelVar(0);			//设置粒子的切向加速度,切向加速度的变化率			m_emitter->setTangentialAccel(30);			m_emitter->setTangentialAccelVar(0);			//设置粒子的位置,位置的变化率			m_emitter->setposition(CCPoint(400,500));			m_emitter->setPosVar(CCPoint(400,0));						//设置粒子声明,生命的变化率			m_emitter->setlife(4);			m_emitter->setlifeVar(2);			//设置粒子开始的自旋转速度,开始自旋转速度的变化率			m_emitter->setStartSpin(30);			m_emitter->setStartSpinVar(60);			//设置结束的时候的自旋转以及自旋转的变化率			m_emitter->setEndSpin(60);			m_emitter->setEndSpinVar(60);			cccolor4F cc;			cc.a=1.0f;			cc.b=255.0f;			cc.g=255.0f;			cc.r=255.0f;			cccolor4F cc2;			cc2.a=0;			cc2.b=0;			cc2.g=0;			cc2.r=0;			//设置开始的时候的颜色以及颜色的变化率			m_emitter->setStartcolor(cc);			m_emitter->setStartcolorVar(cc2);						//设置结束的时候的颜色以及颜色的变化率			m_emitter->setEndcolor(cc);			m_emitter->setEndcolorVar(cc2);			//设置开始时候粒子的大小,以及大小的变化率			m_emitter->setStartSize(30);			m_emitter->setStartSizeVar(0);			//设置粒子结束的时候的大小,以及大小的变化率			m_emitter->setEndSize(20.0f);			m_emitter->setEndSizeVar(0);						//设置每秒钟产生粒子的数目			m_emitter->setEmissionRate(100);			addChild(m_emitter);


代码中的注释写的很是清楚,还是来看看下雪的效果吧:

2.使用粒子编辑器

粒子编辑器可以很方便的生成我们需要的效果,在windows平台上,现在免费的只有一款软件ParticleEditor。

下载地址:点击下载

先使用这个粒子编辑器生成我需要的下雪的pList文件,然后将pList文件和图片问价一起复制到Resources文件中。

然后在Cocosd-x中就可以使用了。

下面是实现的代码:

[cpp] view plain copy print ? CCParticleSystemQuad*mSystem=newCCParticleSystemQuad(); mSystem->initWithfile("zhycheng.pList");//pList文件可以通过例子编辑器获得 mSystem->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("sNow.png") ,CCRectMake(0,32,32));//加载图片,第一个参数是纹理,第二个参数是选择图片上的位置 mSystem->setBlendAdditive(true);//这个调用必不可少 mSystem->setposition(ccp(400,670));//设置位置 addChild(mSystem);
		CCParticleSystemQuad* mSystem = new CCParticleSystemQuad();		mSystem->initWithfile("zhycheng.pList");//pList文件可以通过例子编辑器获得		mSystem->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("sNow.png"),32));//加载图片,第一个参数是纹理,第二个参数是选择图片上的位置		 mSystem->setBlendAdditive(true);//这个调用必不可少		mSystem->setposition(ccp(400,670));//设置位置		addChild(mSystem);


下面是实现的效果:

哈哈,这是我没有编辑好,就这效果。

3.使用Cocos2d-x提供的效果

Cocos2d-x为我们定义的一些已经做好的粒子效果,我们只需要指定图片就行了,具体有哪些,现在就写下面的这几个吧,刚才官网上不去,以后再编辑吧。

CCParticleFire CCParticleFireworks CCParticleSun CCParticlegalaxy

CCParticleFlower CCParticleMeteor CCParticleSpiral CCParticleExplosion CCParticleSmoke

我继续用Cocos2d-x来实现下雪的效果吧:

[cpp] view plain copy print ? CCParticleSNow*sNow=CCParticleSNow::create(); sNow->setposition(ccp(400,670)); sNow->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("sNow.png"),32)); addChild(sNow);
		CCParticleSNow *sNow=CCParticleSNow::create();		sNow->setposition(ccp(400,670));		sNow->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage("sNow.png"),32));		addChild(sNow);


这里面一定要指定图片。

下面接着看效果吧:

这个效果才是最好的。

总结

以上是内存溢出为你收集整理的【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果全部内容,希望文章能够帮你解决【Cocos2d-x游戏引擎开发笔记(11)】粒子系统----实现下雪效果所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1032331.html

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

发表评论

登录后才能评论

评论列表(0条)

保存