Particle designer粒子编辑器可到这里下载(包含授权码):http://www.cocoachina.com/downloads/code/2012/0706/4424.html

-- CCParticleSystem是所有粒子系统的父类

-- CCParticleSystemPointCCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性)

-- CCParticleExplosion (爆炸粒子效果)

-- CCParticleFireworks (烟花粒子效果)

-- CCParticleFire (火焰粒子效果)

-- CCParticleFlower (花束粒子效果)

-- CCParticlegalaxy (星系粒子效果)

-- CCParticleMeteor (流星粒子效果)

-- CCParticleSpiral (漩涡粒子效果)

-- CCParticleSNow (雪粒子效果)

-- CCParticleSmoke (烟粒子效果)

-- CCParticleSun (太阳粒子效果)

-- CCParticleRain (雨粒子效果)

以上都是cocos2d自带的粒子系统,也是蛮强大的。关键玩的不是这些类,而是粒子系统的属性,N多的属性,想调出漂亮的效果还就靠这些属性了。暂且先不管那些,后面会讲到一个工具(Particle Designer,蛮方便的,省去了不少事。现在我们先理解些东西。

1、有关CCParticleSystemPointCCParticleSystemQuad

大部分粒子系统都会继承这两个系统之一,那到底去继承哪一个呢?我们来分析下:

CCParticleSystemPoint点粒子系统,消耗内存比较少,运行速度比较快,但这只是说在12代机器上,3代以后的性能就不咋地了。

CCParticleSystemQuad方形粒子系统,在3代以后的机器上运行的比较快,他会消耗更多的内存和cpu

可谓各有利弊哈!那么我们可以在代码中根据不同的机器来选择最佳的粒子系统么?

答案是可以的。

使用预处理器ARCH_OPTIMAL_PARTICLE_SYstem来定义粒子系统,在代码编译过程中来判断使用哪一个粒子系统。会自动的根据机型选择合适的粒子系统

例:@interfaceCCParticleExplosion:ARCH_OPTIMAL_PARTICLE_SYstem

2、有关粒子贴图

粒子贴图必须小于64x64的,越小越好。

可以将贴图嵌入到Particle Designer中(缺点:修改贴图不方便),

也可导入工程中self.texture =[[CCTextureCachesharedTextureCache] addImage:particleFile]

好了,下一步我们就来学习下粒子工具ParticleDesigner,一个可视调属性工具。下载地址:http://particledesigner.71squared.com.这个工具怎么来用就不细说了,打开此工具一目了然。在此说下在项目中怎么来用这个工具导出的文件。

1、点击工具中SAVE,保存为.plist格式文件,然后将文件导入到项目中(最基本的就不用说了)。

2、然后实例化粒子对象 (这里必须用ARCH_OPTIMAL_PARTICLE_SYstem来初始化,如果用父类CCParticleSystem将什么都看不到

CCParticleSystem* system = [ARCH_OPTIMAL_PARTICLE_SYstemparticleWithFile:@"fx-explosion.plist"];

[selfaddChild:systemz:1tag:1];

3、OK接下来可以修改下在工具中不能修改的属性

system.positionType=kCCPositionTypeFree;

system.autoRemoveOnFinish=YES;//发射完粒子消失后从父节点移除

system.position=ccp(100,100);//粒子发射器位置

需要注意一点的是positionType这个属性,翻看Himi的教程,里面有个讲到粒子会随精灵的位置变动而变动。这都取决于这个属性的设定。有三个值:

kCCPositionTypeRelative相对模式,粒子发射器会随精灵移动而移动,可用于制作角色身上特效等等

kCCPositionTypeGrouped这个和上边的产生效果一样(实验得到的结果),区别在于这个是粒子随发射器移动而移动

kCCPositionTypeFree自由模式,不会随粒子节点移动而移动(可产生火焰、蒸汽等效果)

4、最后我们再说个在测试中遇到的问题, 当要显示粒子效果时,在界面上会轻微的卡下,这是粒子在加载贴图资源。这个问题不解决可能会使游戏变得不流畅了。在这里我们可以使用预加载机制,这个方法也是跟教程学的,嘿嘿!学习无处不在嘛!

首先,我们在游戏进入的场景的初始化init中加入[preloadParticleEffect];

- (void)preloadParticleEffect

{

[ }

因为particleWithFile方法是以自动释放的方式初始化的粒子,因此不用关心他们的内存释放问题。

当他们释放掉以后他们的贴图会保留再缓存(CCTextureCache)中,因此解决了粒子显示时及时加载贴图的问题。

如果"fx-explosion.plist"里面没有嵌贴图,那就用[[CCTextureCachesharedTextureCache]addImage:@"fire.png"];这个方式先把贴图加入缓存啦。

工具的属性介绍:

属性的介绍" style="margin: 0px; padding: 0px; border-style: none; list-style: none;" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif">

基本的设置

Max Particles粒子的数量

Lifespan生命周期,周期越长屏幕上同事存在的粒子数量就越多

LifespanVariance生命周期的变量值,例如生命周期为5,变量为1,那么生命周期就会在5-15+1之间随机一个数

Start Size开始的粒子大小

Start SizeVariance开始粒子大小的变量值

Finish Size结束的粒子大小

Finish SizeVariance结束粒子大小的变量值

Particle EmitAngle粒子发射的角度

Particle EmitAngle Variance粒子发射角度变量值

Position Y发射的Y坐标

Position X发射的X坐标

Duration持续时间,当为-1时候是持久的

发射模式设置

Gracity重力模式

Speed粒子速度

Speed Variance速度变量值

Gracity x粒子重力下X轴上的加速度

Gravity y粒子重力下Y轴上的加速度

Radial acceleration当是正数时,离发射器越远,加速就越大;否则相反

Radial acceleration Variance以上的浮动值

Tangential acceleration让粒子旋转围着发射器运动,越远加速越快。当为正时,逆时针旋转;否则相反

Radial半径模式(让粒子沿着一个圆形旋转,可产生漩涡、螺旋效果)

Max Radius最大半径

Max Radius Variance以上浮动值

Min Radius最小半径

Deg.Per.Second影响粒子移动的方向和速度

Deg.Per.Second Var以上浮动值

颜色模式(ccColor4F

Red

Blue

Green绿

Alpha透明度

粒子混合模式Blend Function

来源Source和目标Destination这个两个值都为以下几种情况:

GL_ZERO

GL_ONE

GL_SRC_COLOR

GL_ONE_MINUS_SRC_COLOR

GL_SRC_ALPHA

GL_ONE_MINUS_SRC_ALPHA

GL_DST_ALPHA

GL_ONE_MINUS_DST_ALPHA

比如:

来源混合模式GL_SRC_ALPHA和目标混合模式GL_ONE_MINUS_SRC_ALPHA的话,得到的 将会是透明的粒子。

来源混合模式GL_SRC_ALPHA和目标混合模式GL_ONE经常配合使用来生成递增型 的混合效



转:http://blog.sina.com.cn/s/blog_4dc0f99c01019hlx.html

cocos2d粒子系统--粒子编辑器Parti…的更多相关文章

  1. swift – SceneKit:应用程序在SCNView上渲染SpriteKit粒子系统时崩溃,当所有代码似乎都是系统代码的一部分时如何调试

    在SCNView的overlaySKScene属性中运行SpriteKit粒子系统会导致应用程序崩溃,并显示下面的堆栈跟踪.基于堆栈跟踪,似乎所有系统代码都在运行,所以你应该如何调试崩溃,更重要的是,确定它是否是SceneKit/SpriteKit的错误或应用程序中的错误?

  2. THREE.JS入门教程(4)创建粒子系统

    Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D本文将介绍创建一个粒子系统/风格/引入物理等等,感兴趣的朋友可以了解下哦,希望本文对你有所帮助

  3. IOS 粒子系统 (CAEmitterLayer)实例详解

    这篇文章主要介绍了IOS 粒子系统 (CAEmitterLayer)实例详解的相关资料,需要的朋友可以参考下

  4. .net – 给定选择,混合模式程序集与单独的互操作DLL的优缺点是什么?

    当“混合模式组合”和“单独的互操作”版本提供第三方组件时,每个组件的优点和缺点是什么?混合模式组合似乎在我的项目中工作正常,没有GAC安装.很少有一个更少的DLL.感觉更整洁那么有什么缺点呢?

  5. ios – 使用Multiply混合模式覆盖UIImageViews?

    我有2个UIImageViews显示在彼此之上.其中一个可以使用手势识别器拖动.有没有一种方法可以使用像Multiply这样的混合模式渲染ImageViews?

  6. 我应该使用什么方法进行C#脚本编写

    回答这个问题时要考虑的另一个非常重要的事情:请注意,这将是游戏的粒子系统.编译的代码每帧调用超过3000次.因此,编译代码执行的时间比其他游戏函数要长得多,这一点非常重要.将修饰符脚本编译到表单的委托中会很好:委托voidModifyParticle;这可能吗?解决方法是,使用CSScriptlibrary可以实现这一点非常简单.

  7. c# – 使用混合模式颜色在另一个图像上绘制图像

    在Photoshop中,您可以选择“颜色”将混合模式设置为下一个较低层:如果图像顶部只有一个渐变,结果可能如下所示:我在某处找到的颜色混合模式的描述是:颜色将下层的色调和饱和度改变为上层的色调和饱和度,但仅留下亮度.到目前为止我的代码是:但那是–当然–只是在较低的图像上绘画.所以问题是:如何使用Photoshop中提供的混合模式“颜色”在另一个图像上绘制图像?

  8. 混合模式程序集(C/C++LI项目)是否可以在.NET Core上运行?

    我有一个使用C/C++LI项目的代码库,它通过瘦包装类将C类暴露给CLR.例如…C项目中的C代码混合模式程序集中的C/C++LI代码据我所知,混合模式程序集几乎只能在Windows.NET上运行.我希望我不需要重新考虑组件并使用P/Invoke,这将为我提供跨平台支持.有谁知道.NETCore是否支持混合模式程序集?

  9. 《Cocos2d-x实战 JS卷 Cocos2d-JS开发》上线了

    mod=viewthread&tid=1197&extra=page%3D1样章下载地址:http://pan.baidu.com/s/1pJ7Lc8N《Cocos2d-x实战JS卷Cocos2d-JS开发》是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序代码管理、两大应用商店发布产品。基础篇包括第2章~第8章,Cocos2d-JS介绍、环境搭建、标签、菜单、精灵、场景、层、动作、特效、动

  10. 《Cocos2d-x实战 JS卷 Cocos2d-JS开发》上线了-源码-样章-感谢大家的支持

    《Cocos2d-x实战JS卷Cocos2d-JS开发》上线了感谢大家一直以来的支持!mod=viewthread&tid=1197&extra=page%3D1样章下载地址:http://pan.baidu.com/s/1pJ7Lc8NCocos2d-JS学习路线图《Cocos2d-x实战JS卷Cocos2d-JS开发》是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序代码管理、两大应用商

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部