- //粒子特效
- //爆炸效果
- CCParticleSystem* particleSystem = CCParticleExplosion::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("stars.png"));
- addChild(particleSystem);
- //火焰效果
- CCParticleSystem* particleSystem = CCParticleFire::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //花束效果
- CCParticleSystem* particleSystem = CCParticleFlower::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //烟花效果
- CCParticleSystem* particleSystem = CCParticleFireworks::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //星系效果
- CCParticleSystem* particleSystem = CCParticleGalaxy::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //流星效果
- CCParticleSystem* particleSystem = CCParticleMeteor::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //下雨效果
- CCParticleSystem* particleSystem = CCParticleRain::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //烟雾效果
- CCParticleSystem* particleSystem = CCParticleSmoke::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //下雪效果
- CCParticleSystem* particleSystem = CCParticleSnow::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("snow.png"));
- addChild(particleSystem);
- //漩涡效果
- CCParticleSystem* particleSystem = CCParticleSpiral::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
- //太阳效果
- CCParticleSystem* particleSystem = CCParticleSun::create();
- particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));
- addChild(particleSystem);
虽然项目的结构看上去不复杂,但是obj-c看得我确实有点头疼,再看看cocos2d-x现在的粒子效果觉得应该能做出很多东西了,由于实在没研究透,所以这里就引用大虾工程里的资源先随手做了个烂点的效果,练习一下常用的粒子效果控制,也好增加学习的兴趣……这里就作个总结:
首先需要知道的是粒子的发射器模式,不同发射器模式下有不同的可用参数,也因此会产生不同的效果,这个就有点像是模具,用什么模具就生成出什么样的模型产品,如果随便引用参数那是有可能会报错的:
1.重力模式->setEmitterMode(kCCParticleModeGravity)
重力模式下可以按照设定的重力点setGravity,根据附加参数如速度、径向加速度、切向加速度……来获得对应的粒子效果。
2.半径模式->->setEmitterMode(kCCParticleModeRadius)
这个模式下,粒子的活动范围、动作是按圆形、半径来划分的,像上面的爆炸中心效果我就设定粒子初始产生的活动半径范围和粒子生命周期结束时活动的半径范围。
粒子还有三种关于运动位置坐标的影响模式->setPositionType(),这里引用一段解释:
假设粒子发射器A被加入了SpriteB, ( B->addChild(A) )
1.kCCPositionTypeFree
当B运动时,若设置Free,A发出的粒子则会出现拖尾现象。若设置其他的,则不会出现拖尾。
2.kCCPositionTypeRelative
当A相对B中坐标变动的时,若设置Relative,A发出的粒子则会出现拖尾现象。
3.kCCPositionTypeGrouped
而设置Grouped,不管什么坐标改变都不会发生拖尾现象。
总结,Free是相对于世界,Relative相对于父节点,Grouped是相对于发射器坐标。
至于其它各附加属性参数的话,其实稍微懂点英语的都能看得出是作什么用了,不过用粒子编辑器的时候,通过调整各个参数能更直观地看到粒子效果。