cocos2d 粒子效果以及Particle Designer粒子工具的学习
最近在学习cocos2d中的粒子效果吧,下面就把学到的和大家分享下吧!
Now!我们先了解下类结构吧
-- CCParticleSystem(所有粒子系统的父类)
-- CCParticleSystemPoint、CCParticleSystemQuad (点粒子和方形粒子系统,都继承了CCParticleSystem的所有属性)
-- CCParticleExplosion (爆炸粒子效果)
-- CCParticleFireworks (烟花粒子效果)
-- CCParticleFire (火焰粒子效果)
-- CCParticleFlower (花束粒子效果)
-- CCParticleGalaxy (星系粒子效果)
-- CCParticleMeteor (流星粒子效果)
-- CCParticleSpiral (漩涡粒子效果)
-- CCParticleSnow (雪粒子效果)
-- CCParticleSmoke (烟粒子效果)
-- CCParticleSun (太阳粒子效果)
-- CCParticleRain (雨粒子效果)
Ok,基本上也就这么多东西吧。都是cocos2d自带的粒子系统,也是蛮强大的。关键玩的不是这些类,而是粒子系统的属性,N多的属性,想调出漂亮的效果还就靠这些属性了。暂且先不管那些,后面会讲到一个工具(Particle Designer),蛮方便的,省去了不少事。现在我们先理解些东西。
1、 有关CCParticleSystemPoint 和CCParticleSystemQuad
大部分粒子系统都会继承这两个系统之一,那到底去继承哪一个呢?我们来分析下:
CCParticleSystemPoint 点粒子系统,消耗内存比较少,运行速度比较快,但这只是说在1、2代机器上,3代以后的性能就不咋地了。
CCParticleSystemQuad 方形粒子系统,在3代以后的机器上运行的比较快, 他会消耗更多的内存和CPU。
可谓各有利弊哈!那么我们可以在代码中根据不同的机器来选择最佳的粒子系统么?
答案是可以的。
使用预处理器ARCH_OPTIMAL_PARTICLE_SYSTEM来定义粒子系统,在代码编译过程中来判断使用哪一个粒子系统。会自动的根据机型选择合适的粒子系统
例:@interface CCParticleExplosion : ARCH_OPTIMAL_PARTICLE_SYSTEM
2、 有关粒子贴图
粒子贴图必须小于64x64的,越小越好。
可以将贴图嵌入到Particle Designer中(缺点:修改贴图不方便),
也可导入工程中self.texture = [[CCTextureCache sharedTextureCache] addImage:particleFile]。
好了,下一步我们就来学习下粒子工具 Particle Designer,一个可视调属性工具。下载地址:http://particledesigner.71squared.com. 这个工具怎么来用就不细说了,打开此工具一目了然。在此说下在项目中怎么来用这个工具导出的文件。
这个工具属性相关介绍我已经整理了一份 http://www.cnblogs.com/xuling/archive/2012/02/16/2354249.html
1、 点击工具中SAVE,保存为.plist格式文件,然后将文件导入到项目中(最基本的就不用说了)。
2、 然后实例化粒子对象 (这里必须用ARCH_OPTIMAL_PARTICLE_SYSTEM来初始化,如果用父类CCParticleSystem将什么都看不到)
CCParticleSystem * system;
system = [ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"fx-explosion.plist"];
[self addChild:system z:1 tag:1];
3、 OK接下来可以修改下在工具中不能修改的属性
system.positionType = kCCPositionTypeFree;
system.autoRemoveOnFinish = YES;//发射完粒子消失后从父节点移除
system.position = ccp(100, 100);//粒子发射器位置
需要注意一点的是 positionType 这个属性,翻看Himi 的教程,里面有个讲到粒子会随精灵的位置变动而变动。这都取决于这个属性的设定。有三个值:
kCCPositionTypeRelative 相对模式, 粒子发射器会随精灵移动而移动,可用于制作角色身上特效等等
kCCPositionTypeGrouped 这个和上边的产生效果一样(实验得到的结果),区别在于这个是粒子随发射器移动而移动
kCCPositionTypeFree 自由模式, 不会随粒子节点移动而移动(可产生火焰、蒸汽等效果)
4、 最后我们再说个在测试中遇到的问题, 当要显示粒子效果时,在界面上会轻微的卡下,这是粒子在加载贴图资源。这个问题不解决可能会使游戏变得不流畅了。在这里我们可以使用预加载机制,这个方法也是跟教程学的,嘿嘿!学习无处不在嘛!
首先,我们在游戏进入的场景的初始化init中加入 [self preloadParticleEffect];
- (void)preloadParticleEffect
{
[ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"fx-explosion.plist"];
}
因为particleWithFile方法是以自动释放的方式初始化的粒子,因此不用关心他们的内存释放问题。
当他们释放掉以后他们的贴图会保留再缓存(CCTextureCache)中,因此解决了粒子显示时及时加载贴图的问题。
如果"fx-explosion.plist"里面没有嵌贴图,那就用[[CCTextureCachesharedTextureCache] addImage:@"fire.png"];这个方式先把贴图加入缓存啦。
到此为止,算是学完了,乱七八糟的扯了一大堆,有用的也就是后面这段, 这也是为了理解深刻点嘛!哈哈 ,怎么用说完了,调效果那就需要大家自己用工具调了,貌似不 那么容易 。。。大家加油吧! 有什么要补充的提出来哈,大家一起学习嘛, 继续忙了, 源码链接就放下面了 。。。
cocos2d 粒子效果以及Particle Designer粒子工具的学习的更多相关文章
- Particle designer 粒子工具中属性对应功能的简单介绍
粒子配置 Max Particles 粒子的数量 一般而言,我们的目标是用最少的粒子创造出所需的效果.单个粒子的大小对游戏运行效率也有很大的影响——单个粒子越小,性能越高. Lifespan 生命周 ...
- cocos2d粒子效果
第9章 粒子效果 游戏开发者通常使用粒子系统来制作视觉特效.粒子系统能够发射大量细小的粒子并对他们进行渲染,而且效率要远高于渲染同样数目的精灵.粒子系统可以模拟下雨.火焰.雪.爆炸.蒸气拖尾以及其他多 ...
- (转)粒子编辑器Particle designer属性的介绍
转载:http://blog.csdn.net/ym19860303/article/details/9210539 Particle designer粒子编辑器可到这里下载(包含授权码):http: ...
- Particle 粒子效果使用(适配微信小游戏,particle is not defined)
在微信小游戏中使用粒子效果 参考: 1. 粒子库下载地址 2. 粒子官方使用教程 3. 水友解决微信小游戏particle is not defined 一.下载第三方库 Git地址:https:// ...
- Cocos2d-x 粒子编辑器 Particle Studio 争做 Windows Particle Designer 源代码
1.Particle Studio介绍 非常早发现一款粒子编辑器叫Particle Designer,不知道为什么它没有Windows版本号. 所以我就在Windows下基于Qt做了一个粒子编辑器.之 ...
- 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果
1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...
- cocos2d-x 粒子效果
大规模运动的物体通常有两种方法实现 1.使用帧动画来模拟 2,粒子效果 粒子系统有CCParticleSystem类实现,CCParticleSystem实现了对粒子的控制与调度,对粒子的操作包含: ...
- Cesium 实现粒子效果贴地(伪)
有时我们面对这样的需求,需要在地面上放一个周期性放大缩小的标记,可以使用粒子效果实现,但是粒子效果图片很难贴地(如果你知道怎么做,欢迎分享,期待有人打我脸),我只能变通实现一个看似贴地但实际没有贴地的 ...
- cocos2d(粒子效果编辑器)
ParticleDesigner for Mac下载地址:http://www.cocoachina.com/bbs/read.php?tid=108339 最近在做一款粒子编辑器 其实就是在co ...
随机推荐
- 基于RxJava2+Retrofit2简单易用的网络请求实现
代码地址如下:http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封装 ...
- poj3177 Redundant Paths 边双连通分量
给一个无向图,问至少加入多少条边能够使图变成双连通图(随意两点之间至少有两条不同的路(边不同)). 图中的双连通分量不用管,所以缩点之后建新的无向无环图. 这样,题目问题等效于,把新图中度数为1的点相 ...
- js jquery 结束循环
js 中跳出循环用break,结束本次循环用continue,jqeruy 中循环分别对应 return false 和return true. jquery 中each循环 跳出用return tr ...
- linuxubuntu升级.net core版本到2.0
直接看这里 https://www.microsoft.com/net/core#linuxubuntu
- python --闭包学习
闭包概念: Closure:内部函数中对enclosing作用域的变量进行引用 enclosing作用域:函数内部与内嵌函之间 范例1: #coding:utf-8 def set_passline( ...
- NOJ 1012 进制转换(十进制转换成随意进制)
题目: 进制转换 时间限制(普通/Java) : 1000 MS/ 3000 MS 执行内存限制 : 65536 KByte总提交 : 1819 測试通过 : ...
- 更新Bash路径的缓存
---恢复内容开始--- 1.登陆一个新的vps时候,发现git的版本是1.8的,太久了,于是就源码安装了新的版本2.4. 2.老版本在/usr/bin/git,新版本安装的/usr/local/bi ...
- PHPCMS 学习
1.碎片管理2.为了升级操作 MY_ thinkphp为大写phpcms里面也是大写 然后继承如果加构造函数要调用一次父类的构造函数,最好在最上面调用 final 不可重写 重写最好调用一次paren ...
- Python 函数常用方法总结
一.函数的定义与优势: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. Python提供了许多内建函数,比如print(),但也可以自己 ...
- springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...