IOS cocos2d学习笔记-<六>CCParticalSystem粒子效果
2013-08-08 22:03
519 查看
(本文写作基于千锋3g学院提供的第三季讲授视频编写,更多资料和资源下载地址请看笔记扉页:传送门)
这一讲很有意思,听着讲师说“离子离子”的有点不明觉厉的感觉,但你细心一下会发觉他其实在说“粒子”
好吧,有意思的地方不在这里,而是在于对于我来说有点高端的东西。
粒子效果,顾名思义,就是很多张细小的图片通过一些不规则的运动形成的效果,这些效果的应用不仅增加了游戏的体现性,还增加了机子的性能负担...
试想让你下一场雪贴了上百张小图片在屏幕上缓缓下降,这得创建多少个精灵对象,这得耗上多少内存?
所以!一个好的粒子效果方法是很必要的,于是我们用到cocos2d的一个封装好的类进行操作。
初学者只需要掌握使用方法就好了,程度好一点的话可以进去看一看其结构,甚至可以写属于自己的粒子效果,也不是很难的事。
这一讲,有两个关键类:CCParticleSystem和CCTextureCache
CCParticleSystem(粒子系统)
在视频里面是讲得比较多的,我们主要使用它的子类来实现粒子效果
首先,CCParticleSystem有两个子类分别是CCParticleSystemQuad和CCParticleSystemPoint
这两个类是两种不同的绘图方式,CCParticleSystem是合理利用新GPU进行绘图的比较先进的类别,在ARMv7及以后都使用这个
比较旧的ARMv6使用CCParticleSystemPoint
这里有个宏:ARCH_OPTIMAL_PARTICLE_SYSTEM,其代码如下:
作用是根据机器硬件决定使用哪一个类,保险点,用宏吧。
好,下面就是具体的粒子效果类列举:
他们都继承于上文提到的CCParticleSystemQuad
由于他们的老祖宗都是CCNode,那这就意味着你只需揪出一个类来创建一个实例然后往场景里面+(void) addChild:(id) 就能看见这个粒子效果了。
但我们看到的只有块一块的东西,我们会想到需要对这个实例进行各种的设置,达到我们想要的效果,除了设置位置(Position)、大小(Scale)、角度(Angle)等等的常量外,有一个重要的属性就是文章开头提到的纹理(CCTextureCache):
CCTextureCache(纹理缓冲存储器)
这个东西有点牛,这个东西就是让这么多图片畅顺跑起来的关键。
CCTextureCache类跟导演一样,使用的通常是单例模式,随时调用进行操作。
下面是CCTextureCache常用的方法:
我们可以把这CCTextureCache类当做一个厂房,我们提供一张图片给它,然后它将会把这图片进行一系列处理之后得到粒子系统(CCParticleSystem)所需的产品(CCTexture2D)并提供给粒子系统配上适当的图。
这样我们的粒子效果中每个粒子都会有图片显示的纹理在上面,而不是一块一块的矩形了。
CCParticleSystemQuad
好吧,是的,又是它。因为文章的思维走完了才发现把它给忘记了,我只说它的其中一个常用的自定义粒子效果方法——
使用plist文件来创建粒子效果,这是在CCParticleSystem里面的方法:
+ (id) particleWIthFile: (NSString *) plistFile;
那么这个plist文件在哪里来呢?视频里面骚骚打了一下广告:用ParticleDesigner-粒子设计器。(要给钱的)
有试用期,有空试试吧,下载地址:http://www.71squared.com/
当然自己写也可以,当然,当你打开源代码里面的plist文件看一下就会有所觉悟,这个要花上一定的时间了....
这里提供一个比较全面的转发说明文章:http://blog.csdn.net/youngsblog/article/details/9842457
另外,离子效果有两个比较重要的设置:
+ (void) setPositionType: (kCCPositionType)
取决于这个属性的设定。有三个值:
kCCPositionTypeRelative 相对模式, 粒子系统会随精灵移动而移动,可用于制作角色身上特效等等
举个栗子:一个角色add进了场景里面,他身上add了一个粒子系统,这个粒子系统会一直跟着这个角色,但掉出来的粒子不会跟着一起走。
kCCPositionTypeGrouped 这个和上边的产生效果一样(实验得到的结果),区别在于这个是掉出来的粒子会随粒子系统移动而移动
kCCPositionTypeFree 自由模式, 不会随粒子系统移动而移动(可产生火焰、蒸汽等效果)
+ (void) setAutoRemoveOnFinish:(BOOL)
这个很自然地方法名字告诉你了作用了,记得不需要的时候把这个设为yes吧。
这一讲很有意思,听着讲师说“离子离子”的有点不明觉厉的感觉,但你细心一下会发觉他其实在说“粒子”
好吧,有意思的地方不在这里,而是在于对于我来说有点高端的东西。
粒子效果,顾名思义,就是很多张细小的图片通过一些不规则的运动形成的效果,这些效果的应用不仅增加了游戏的体现性,还增加了机子的性能负担...
试想让你下一场雪贴了上百张小图片在屏幕上缓缓下降,这得创建多少个精灵对象,这得耗上多少内存?
所以!一个好的粒子效果方法是很必要的,于是我们用到cocos2d的一个封装好的类进行操作。
初学者只需要掌握使用方法就好了,程度好一点的话可以进去看一看其结构,甚至可以写属于自己的粒子效果,也不是很难的事。
这一讲,有两个关键类:CCParticleSystem和CCTextureCache
CCParticleSystem(粒子系统)
在视频里面是讲得比较多的,我们主要使用它的子类来实现粒子效果
首先,CCParticleSystem有两个子类分别是CCParticleSystemQuad和CCParticleSystemPoint
这两个类是两种不同的绘图方式,CCParticleSystem是合理利用新GPU进行绘图的比较先进的类别,在ARMv7及以后都使用这个
比较旧的ARMv6使用CCParticleSystemPoint
这里有个宏:ARCH_OPTIMAL_PARTICLE_SYSTEM,其代码如下:
#if defined(__ARM_NEON__) || defined(__MAC_OS_X_VERSION_MAX_ALLOWED) || TARGET_IPHONE_SIMULATOR #define ARCH_OPTIMAL_PARTICLE_SYSTEM CCParticleSystemQuad // ARMv6 use "Point" particle #elif __arm__ #define ARCH_OPTIMAL_PARTICLE_SYSTEM CCParticleSystemPoint #else #error(unknown architecture) #endif
作用是根据机器硬件决定使用哪一个类,保险点,用宏吧。
好,下面就是具体的粒子效果类列举:
他们都继承于上文提到的CCParticleSystemQuad
由于他们的老祖宗都是CCNode,那这就意味着你只需揪出一个类来创建一个实例然后往场景里面+(void) addChild:(id) 就能看见这个粒子效果了。
但我们看到的只有块一块的东西,我们会想到需要对这个实例进行各种的设置,达到我们想要的效果,除了设置位置(Position)、大小(Scale)、角度(Angle)等等的常量外,有一个重要的属性就是文章开头提到的纹理(CCTextureCache):
CCTextureCache(纹理缓冲存储器)
这个东西有点牛,这个东西就是让这么多图片畅顺跑起来的关键。
CCTextureCache类跟导演一样,使用的通常是单例模式,随时调用进行操作。
下面是CCTextureCache常用的方法:
CCParticleSystem *system = nil; system = [CCParticleMeteor node]; // 实例化雪花粒子效果 CCTexture2D *t = [[CCTextureCache sharedTextureCache] addImage:@"ice1.png"]; // 首先获取纹理缓冲存储器的单例加入图片加工,返回的是一个CCTexture2D类型的指针
[system setTexture:t]; // 把CCTexture2D类对象作为纹理加入到粒子系统中
我们可以把这CCTextureCache类当做一个厂房,我们提供一张图片给它,然后它将会把这图片进行一系列处理之后得到粒子系统(CCParticleSystem)所需的产品(CCTexture2D)并提供给粒子系统配上适当的图。
这样我们的粒子效果中每个粒子都会有图片显示的纹理在上面,而不是一块一块的矩形了。
CCParticleSystemQuad
好吧,是的,又是它。因为文章的思维走完了才发现把它给忘记了,我只说它的其中一个常用的自定义粒子效果方法——
使用plist文件来创建粒子效果,这是在CCParticleSystem里面的方法:
+ (id) particleWIthFile: (NSString *) plistFile;
那么这个plist文件在哪里来呢?视频里面骚骚打了一下广告:用ParticleDesigner-粒子设计器。(要给钱的)
有试用期,有空试试吧,下载地址:http://www.71squared.com/
当然自己写也可以,当然,当你打开源代码里面的plist文件看一下就会有所觉悟,这个要花上一定的时间了....
这里提供一个比较全面的转发说明文章:http://blog.csdn.net/youngsblog/article/details/9842457
另外,离子效果有两个比较重要的设置:
+ (void) setPositionType: (kCCPositionType)
取决于这个属性的设定。有三个值:
kCCPositionTypeRelative 相对模式, 粒子系统会随精灵移动而移动,可用于制作角色身上特效等等
举个栗子:一个角色add进了场景里面,他身上add了一个粒子系统,这个粒子系统会一直跟着这个角色,但掉出来的粒子不会跟着一起走。
kCCPositionTypeGrouped 这个和上边的产生效果一样(实验得到的结果),区别在于这个是掉出来的粒子会随粒子系统移动而移动
kCCPositionTypeFree 自由模式, 不会随粒子系统移动而移动(可产生火焰、蒸汽等效果)
+ (void) setAutoRemoveOnFinish:(BOOL)
这个很自然地方法名字告诉你了作用了,记得不需要的时候把这个设为yes吧。
相关文章推荐
- IOS cocos2d学习笔记-<七>CCTransitionScene场景切换动画
- IOS cocos2d学习笔记-<三>AnchorPoint锚点和CCLabelBMFont
- cocos2d-x学习笔记之粒子效果
- IOS cocos2d学习笔记-<一>cocos2d-Box2d的环境搭建
- iOS学习笔记-084.粒子效果——路径移动
- IOS cocos2d学习笔记-<五>CCAction精灵运动
- IOS cocos2d学习笔记-<二>CCScene、CCLayer、CCSprite的关系
- IOS cocos2d学习笔记-<四>Menu&MenuItem
- iOS学习笔记-085.粒子效果——QQ拖动效果
- cocos2d-x 3.1.1 学习笔记[16] Particle 粒子效果
- cocos2d学习笔记第四章 粒子效果及座标系
- cocos2d-x-3.0rc1 学习笔记2( 什么标题、菜单按钮、粒子效果之类的)
- IOS cocos2d学习笔记-<八>游戏关卡(Objective-C文件读写)
- 我的Cocos2d-x学习笔记(十七)CCProgressTo
- Cocos2d-x学习笔记(十三)CCLabel详解
- cocos2d-x学习笔记3:CCTextFieldTTF的使用和再封装
- Cocos2d-X 学习笔记 13 cocos2dx ios 消息推送
- SQL 学习笔记<六> MySQL存储过程基础
- cocos2d学习笔记(六)CCParallaxNode和Tile Map
- cocos2d-x 菜鸟学习笔记十二(粒子系统的研究初接触)