标签:
先来说说我对粒子系统的了解吧,粒子系统是为了模仿自然世界的真实显现,比如说烟,雾,火花,闪电,火焰,下雪。粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子状态。大量的粒子叠加就可以产生我们需要的特效。
在Cocos2d-x中,实现粒子效果可以有三种方法,下面我一一道来。
1.代码自定义
使用这种方法,我们需要自己写代码,使用Cocos2d-x提供的CCParticleSystem来实现,使用这种方法,可以实现我们想要的任意效果。
这段文字的前面是雪花的图片,大家可能看不见,雪花是白的,背景也是白的。
(此处为雪花图片)
下面是在这张图片上下雪的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
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(Github地址)。
先使用这个粒子编辑器生成我需要的下雪的plist文件,然后将plist文件和图片问价一起复制到Resources文件中。
然后在Cocosd-x中就可以使用了。
下面是实现的代码:
1
2
3
4
5
6
7
|
CCParticleSystemQuad* mSystem = new CCParticleSystemQuad(); mSystem->initWithFile( "zhycheng.plist" ); //plist文件可以通过例子编辑器获得 mSystem->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage( "snow.png" ) ,CCRectMake(0,0,32,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来实现下雪的效果吧:
1
2
3
4
|
CCParticleSnow *snow=CCParticleSnow::create(); snow->setPosition(ccp(400,670)); snow->setTextureWithRect(CCTextureCache::sharedTextureCache()->addImage( "snow.png" ),CCRectMake(0,0,32,32)); addChild(snow); |
这里面一定要指定图片。
下面接着看效果吧:
这个效果才是最好的。
来源网址:http://www.sundaboke.com/?post=62
标签:
原文地址:http://www.cnblogs.com/eastnwood/p/4301615.html