cocos2d-x 十二(粒子系统的研究初接触)

我也是第一次玩粒子系统,感觉很多参数,然后这些参数能组合出的效果也异常地多,所以学起来的时候,大脑的脑细胞也消耗得异常地多……粒子系统是一个非常酷的东西,都知道物质是由分子组成的,这粒子就可以看成是组成物质的分子,使用粒子系统可以把粒子按照不同的属性(位置,数量,大小,速度……)组合起来形成一种对应的视觉效果比如:天在下雨就是老天爷在玩雨粒子的特效……很多有大有小的雨滴粒子从天而降便形成了雨景……

关于cocos2d粒子系统介绍的文章还是很多的,而且有的讲得很详细,照例还是先把这些文章推荐一下:

1.一些粒子系统的常识
http://bsr1983.iteye.com/blog/1672022

2.仍然是红孩儿的博文,注重于分析实现原理

http://blog.csdn.net/honghaier/article/details/8537146
http://blog.csdn.net/honghaier/article/details/8564701
http://blog.csdn.net/honghaier/article/details/8580390

这里就引用个很酷的爆炸粒子特效的例子吧,此例子是获得了CocoaChina2012年粒子特效大赛一等奖的作品,爆炸的效果也是相当的酷,主要是学学怎么小小地扩展粒子特效,先看图:


详细介绍及下载:http://www.cocoachina.com/appreview/2012/1226/5413.html

可是只看到有objective-c版本的源码……这个项目主要由三个部分构成:

1.一个切换效果演示的导航菜单

2.一个效果场景,用来加载可乐……不对,是雪碧罐子(精灵)……及爆炸效果……

3.自定义的粒子效果扩展及管理

虽然项目的结构看上去不复杂,但是obj-c看得我确实有点头疼,再看看cocos2d-x现在的粒子效果觉得应该能做出很多东西了,由于实在没研究透,所以这里就引用大虾工程里的资源先随手做了个烂点的效果,练习一下常用的粒子效果控制,也好增加学习的兴趣……这里就作个总结:

首先需要知道的是粒子的发射器模式,不同发射器模式下有不同的可用参数,也因此会产生不同的效果,这个就有点像是模具,用什么模具就生成出什么样的模型产品,如果随便引用参数那是有可能会报错的:

1.重力模式->setEmitterMode(kCCParticleModeGravity)

重力模式下可以按照设定的重力点setGravity,根据附加参数如速度、径向加速度、切向加速度……来获得对应的粒子效果。

2.半径模式->->setEmitterMode(kCCParticleModeRadius)

这个模式下,粒子的活动范围、动作是按圆形、半径来划分的,像上面的爆炸中心效果我就设定粒子初始产生的活动半径范围和粒子生命周期结束时活动的半径范围。

粒子还有三种关于运动位置坐标的影响模式->setPositionType(),这里引用一段解释:

假设粒子发射器A被加入了SpriteB,  ( B->addChild(A) )

1.kCCPositionTypeFree

当B运动时,若设置Free,A发出的粒子则会出现拖尾现象。若设置其他的,则不会出现拖尾。

2.kCCPositionTypeRelative

当A相对B中坐标变动的时,若设置Relative,A发出的粒子则会出现拖尾现象。

3.kCCPositionTypeGrouped

而设置Grouped,不管什么坐标改变都不会发生拖尾现象。

总结,Free是相对于世界,Relative相对于父节点,Grouped是相对于发射器坐标。

至于其它各附加属性参数的话,其实稍微懂点英语的都能看得出是作什么用了,不过用粒子编辑器的时候,通过调整各个参数能更直观地看到粒子效果。

爆炸效果的源代码:http://download.csdn.net/detail/cyistudio/5492103