首页 > cocos2dX 之CCParticle

cocos2dX 之CCParticle

今天我们来看看粒子特效, 何为粒子特效, 为了模拟燃烧的火焰, 天空飘下来的血环, 滴落的小雨, 这些无规律变化的物体, 我们引进了粒子特效这个名词, 粒子特效的原理是将无数的单个粒子组合使其呈现出固定形态,借由控制器,脚本来控制其总体或单个的运动,模拟出现真实的效果, 有朋友会问, 为什么我们不使用序列帧动画呢, 由于序列帧动画是固定的运动方式, 不能模拟出粒子的无规则运动, 所以我们才使用的粒子特效, 并且绘制的动画多了, 会严重的影响帧率, cocos2dX里面的粒子特效优化的就还不错, 能够看到我们待会儿绘制出粒子之后帧率基本上不会发生多大的改变

CCParticleSystem是cocos2dX为我们提供的粒子系统, 我们来看看CCParticleSystem为我们提供了什么

产生粒子: 也被称作粒子发射器

更新粒子状态: 引擎会随时间更新粒子的位置, 速度以及其它状态

回收无效粒子: 当粒子的生存周期结束后, 会被系统回收

 因此, 为了创建一个粒子效果, 我们须要定义粒子怎样产生以及状态怎样改变。


cocos2dX里面已经为我们提供了一些经常使用的粒子, 我们来看看有哪些:

CCParticleExplosion //爆炸粒子效果

CCParticleFireworks //烟花粒子效果

CCParticleFire //火焰粒子效果

CCParticleFlower //花束粒子效果

CCParticleGalaxy //星系粒子效果

CCParticleMeteor //流星粒子效果

CCParticleSpiral //漩涡粒子效果

CCParticleSnow //雪粒子效果

CCParticleSmoke //烟粒子效果

CCParticleSun //太阳粒子效果

CCParticleRain //雨粒子效果



经常使用的函数:

setTexture( CCTexture2D); //设置特效纹理贴图

setAutoRemoveOnFinish( bool); //设置自己主动释放true为自己主动释放。

setPositionType( 移动类型) //设置移动类型

setStartColor( ccc4f); //设置粒子RGBA值

setBlendAdditive( bool); //是否加入混合

setAutoRemoveOnFinish( bool); //是否自己主动移除死亡粒子

移动类型:

kCCPositionTypeFree //自由模式: 粒子不与发射器联系

kCCPositionTypeRelative //相对模式: 粒子发射器尾随节点

kCCPositionTypeGrouped //相对模式: 粒子尾随发射器



并且cocos2dX还同意我们自定义粒子使用:

CCParticleSystemQuad::create( plist文件);



嗯, 说了这么多, 我们还是先来看看怎样创建一个粒子吧, 非常easy的:

//创建一个火焰粒子CCParticleSystem* particle = CCParticleFire::create();particle->setTexture( CCTextureCache::sharedTextureCache()->addImage( "CloseSelected.png"));//加入纹理贴图particle->setAutoRemoveOnFinish( true);						//设置自己主动移除			particle->setPosition( ccp( visibleSize.width / 2, 0));addChild( particle);




对, 就是这么简单, 一个火焰粒子就做好了( 旁白: 你确定你没有骗我?), 我们看看效果:





看看, 出来了吧, 帧率也是60, 没有下降哦( 旁白: 还不是骗我了, 那是火焰么? 怎么感觉像鬼火一样), 额, 这是我为了偷懒, 使用了那个蓝色的关闭button造成的( 旁白: 必须换过来, 大半夜的, 你吓人啊发火), 看着旁白妹纸快要发火了, 我还是决定换一张图片吧, 话说这张看起来不错啊, 我们再来看看效果:











看起来没差别啊, 假设有人看出差别了, 请无视我的美术

嗯, 粒子特效就是这么简单, 大家把其它的也加上去看看效果吧, 





我们再来看看自己定义粒子效果, 我这里使用的是红孩儿工具箱, 这是粒子编辑界面:



我们来看看重力參数:

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

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

speedVar( float); //速度变量

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

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

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

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



半径參数:

startRadius( float); //粒子的開始半径

startRadiusVar( float); //開始半径变量

endRadius( float); //粒子的结束半径

endRadiusVar( float); //结束半径变量

rotatePerSecond( float); //环绕一个来源点的每秒旋转角度

rotatePerSecondVar( 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

我们在粒子编辑器里面做一个火焰:





保存起来, 我们将会得到一个plist文件, 这里面就保存了我们的粒子的配置, 我们直接使用就能够了:



//加入自己定义粒子特效CCParticleSystem* particle2 = CCParticleSystemQuad::create( "fire.plist");particle2->setPosition( ccp( visibleSize.width - 60, 0));addChild( particle2);






看看效果:





有的朋友可能会出现故障, 假设出现故障了, 就看看plist文件最以下的图片文件路径对不正确:







好了  今天我们就到这里了, 晚安哦, 各位

更多相关:

  • 英语的重要性,毋庸置疑!尤其对广大职场人士,掌握英语意味着就多了一项竞争的技能。那,对于我们成人来说,时间是最宝贵的。如何短时间内在英语方面有所突破,这是我们最关心的事情。英语学习,到底有没有捷径可以走,是否可以速成?周老师在这里明确告诉大家,英语学习,没有绝对的捷径走,但是可以少走弯路。十多年的教学经验告诉我们,成功的学习方法可以借...

  • 展开全部 其实IDLE提供了一个显32313133353236313431303231363533e78988e69d8331333365663438示所有行和所有字符的功能。 我们打开IDLE shell或者IDLE编辑器,可以看到左下角有个Ln和Col,事实上,Ln是当前光标所在行,Col是当前光标所在列。 我们如果想得到文件代码...

  • 前言[1]从 Main 方法说起[2]走进 Tomcat 内部[3]总结[4]《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spri...

  • 【本文摘要】【注】本文所述内容为学习Yjango《学习观》相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用。阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英语学习方面,我们的症结所在。学习英语这类运动类知识,需要把握四个原则第一,不要用主动意识。第二,关注于端对端第三,输入输出符合实际情况第四,通过多个例子...

  • 点云PCL免费知识星球,点云论文速读。文章:RGB-D SLAM with Structural Regularities作者:Yanyan Li , Raza Yunus , Nikolas Brasch , Nassir Navab and Federico Tombari编译:点云PCL代码:https://github.co...

  • 面向初学者的Unity视觉效果图介绍 你会学到: 学生将学习使用视觉效果图来创建效果 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:39节课(4h 42m) |大小解压后:3.65 GB 含课程文件 要求 我们将使用unity...

  • MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:40节课(3h 36m) |大小解压后:2.65 GB 含课程文件 从零开始使用尼亚加拉在虚幻引擎中学习实时外汇 你会学到: 了解如何创建实时效果 通过创造效果来学习尼亚加拉瀑布 了...

  • 先看看条形图的的效果还不错是吧,实现这样的效果很合适呢! 还有折线图、饼图很多效果 效果不错对吧~ 下面我们就先来看看条形图的实现方法吧! 第一步: 引入第三方包 MPChart 如果你碰巧看过我之前写的Recycleview的博客这就简单多了,如上图所示就可以添加mpandroidchart到项目中了!果然Android s...

  • 一、简介 这是iOS下的效果,android下完全一致。通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手势控制图片上下动画滑动实现开合效果,还支持声音效果。 二、效果图 三、相关下载 https://github.com/do-proje...

  • 常用css样式大全Author:xu_shuyi201504039.CSS颜色代码大全http://www.cnblogs.com/axing/archive/2011/04/09/CSS.html1.CSS文字属性color : #999999; /*文字颜色*/font-family : 宋体,sans-serif; /*文字字...