[泰然翻译] cocos2d programming guide 粒子效果

转自: http://www.ityran.com/thread-412-1-1.html


粒子效果什么是粒子效果系统?

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。所以它支持所有的粒子系统功能并且在设备上真实的展示




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值