粒子效果什么是粒子效果系统?
WikiPedia: Particle System
在cocos2d中的粒子效果系统
Point vs Quad
在cocos2d中有2中粒子效果系统:Quad和Point粒子效果系统
CCParticleSystemQuad
CCParticleSystemPoint
CCParticleSystemQuad有一些特性是CCParticleSystemPoint所不支持的:
回转粒子:粒子围绕着他所在的轴转动。CCParticleSystemPoint忽略这个属性。
粒子可以有任意的大小。在CCParticleSystemPoint中如果粒子的大小比64还大,则按64来对待。
整个系统可以用scale属性来进行比例的控制
性能对照
从API docs:在1、2代iphone上:CCParticleSystemQuad比CCParticleSystemPoint稍慢
在3代和ipad上:CCParticleSystemQuad比CCParticleSystemPoint快很多,CCParticleSystemQuad消耗的内存和占用的cpu资源比CCParticleSystemPoint多
创建一个Point粒子效果系统
id particleSystem = [[CCParticleSystemPoint alloc] initWithTotalParticles:numberOfParticles];
创建一个Quad粒子效果系统
id particleSystem = [[CCParticleSystemQuad alloc] initWithTotalParticles:numberOfParticles];
Gravity vs Radius mode
自从v0.99.3版本以来,添加了一个新的Radius Mode,旧的行为被叫做Gravity mode。
重力模型
在重力模型里有如下的属性:
gravity(a CGPoint):重力粒子效果系统
speed(a float):粒子发出的速度
speedVar(a float):速度不可变
tangencialAccel(a float):粒子的正切加速度
tangencialAccelVar(a float):正切加速度不可变
radialAccel(a float):辐射型粒子的加速度
radialAccelVar:辐射型粒子的加速度不可变设置
Gravity mode中的粒子,你需要这样做
id particleSystem = [[CCParticleSystemQuad alloc] initWithTotalParticles:numberOfParticles];
[particleSystem setEmitterMode: kCCParticleModeGravity];
Radius Mode这个模型从v0.99.3开始使用
在半径模型里有如下的属性:
startRadius(a float):粒子开始的半径
startRadiusVar(a float):粒子开始的半径不可变
endRadius(a float):粒子结束的半径。如果你想让开始半径等于结束半径,则使用kCCParticleStartRadiusEqualToEndRadius。
endRadiusVar(a float):粒子结束的半径不可变
rotatePerSecond(a float):每一秒一个粒子围绕资源位置旋转
rotatePerSecondVar(a float):易变度数的数量
在“Radius mode"里设置粒子,你需要这样做:id particleSystem = [[CCParticleSystemQuad alloc] initWithTotalParticles:numberOfParticles];
[particleSystem setEmitterMode: kCCParticleModeRadius];
所有模型共同的属性
粒子共同的属性:
startSize:开始像素中的粒子大小
startSizeVarendSize:如果你想让开始的大小等于结束的大小可以使用kCCParticleStartSizeEqualToEndSize
endSizeVar
startColor(a ccColor4F)
startColorVar(a ccColor4F)
endColor(a ccColor4F)
endColorVar(a ccColor4F)
startSpin仅仅在CCParticleSystemQuad中使用
startSpinVar仅仅在CCParticleSystemQuad中使用
endSpin仅仅在CCParticleSystemQuad中使用
endSpinVar仅仅在CCParticlesSystemQuad中使用
life:粒子存在的时间
lifeVar
angle:(a float)粒子开始的角度
angleVarpositon:a CGPoint
posVar
centerOfGravity(a CGPoint)
系统共有的属性
emissionRate(a flost):每秒粒子发射的数量
duration(a float):多少秒后还有粒子系统存在(不同于life属性)。用kCCParticleDurationInfinity来表示无穷状态
blendFunc(a ccBlendFUnc):OpenGL的blending函数适用于这个系统
positionType(a tCCPositionType):使用kCCPositionTypeFree来自由移动粒子,或者使用kCCPositionTypeGrouped来整体移动他们
texture(a CCTexture2D):纹理适用于粒子举例
cocos2d可以预定粒子在自定义运行的时候,粒子如下:
CCParticleFire:粒子点系统,适用重力模型
CCParticleFireworks:粒子点系统,适用重力模型
CCParticleSun:粒子点系统,适用重力模型
CCParticleGalaxy:粒子点系统,适用重力模型
CCParticleFlower:粒子点系统,适用重力模型
CCParticleMeteor:粒子点系统,适用重力模型
CCParticleSpiral:粒子点系统,适用重力模型
CCParticleExplosion:粒子点系统,适用重力模型
CCParticleSmoke:粒子点系统,适用重力模型
CCParticleSnow:粒子点系统,适用重力模型
CCParticleRain:粒子点系统,适用重力模型
粒子设计
使用Particle DesignerParticle Designer 是一个让你创建视图化粒子的工具
为了能使用Particle Designer来创建它
1.下载并注册它(你需要这册才能够保存粒子)
2.使用cocos2d(plist)格式当你保存纹理(你可以选择是否嵌入纹理。cocos2d支持这些格式)
加载一个创建好的粒子通过Particle Designer你应该这么做:
// Either you can create a Quad particle system
id particleSystem = [CCParticleSystemQuad particleWithFile:@"MyParticle.plist"];
// ...or a Point particle system.
id particleSystem = [CCParticleSystemQuad particleWithFile:@"MyParticle.plist"];
cocos2d和Particle Designercocos2d支持所有的Particle Designer功能,但并不是所有的cocos2d功能都支持Particle Designer。
仅仅支持cocos2d:共同的
startSpin/startSpinVar:仅当使用Quad
sendSpin/endSpinVar:仅当使用Quads
仅仅支持cocos2d:Radius mode
cocos2d从Particle Designer中复制Radius Mode,并且稍微延伸一些。
Particle Designer使用3个属性:
maxRadiusmacRadius
Variancemin
Radius
cocos2d使用其它易变的:
startRadius
startRadiusVar
endRadius
endRadiusVar
cocos2d努力追赶Particle Designer行为,并提供更多的可能:
Radius的变化性可以是0或者争证书(从里面增长道外面)
有一个feature request已经开放在71squared用来支持缺少的支持
Particle Mint使用Particle Mint
Particle Mint是另外一个工具允许你创建可视化粒子用你的ipad或者iphone。
可以在App Store里找到为了使用它创建粒子你需要先做如下的事情:
买这个App然后下载它
创建粒子系统后给自己写邮件,然后在邮件里做如下的操作。你需要在你的工程添加一个Particle Factory class.插入一些静态方法来生成你的粒子系统
加载那些你通过Particle Mint创建的粒子:
添加Particle Factory class和纹理到你的工程:
使用如下的代码
CCParticleSystemQuad *effect = [[CCParticleSystemQuad alloc] initWithDictionary:[ParticleFactory makeEffect]];
支持功能Particle Mint是基于cocos2d-1.0-rc3。所以它支持所有的粒子系统功能并且在设备上真实的展示