粒子系统

新建工程,名为testParticle

修改HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__

#define __HELLOWORLD_SCENE_H__


#include "cocos2d.h"


class HelloWorld : public cocos2d::CCLayer

{

public:

    // Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)

    virtual bool init();


    // there's no 'id' in cpp, so we recommend to return the class instance pointer

    static cocos2d::CCScene* scene();    

        // preprocessor macro for "static create()" constructor ( node() deprecated )

    CREATE_FUNC(HelloWorld);

};


#endif // __HELLOWORLD_SCENE_H__


修改HelloWorldScene.cpp

#include "HelloWorldScene.h"

#include "SimpleAudioEngine.h"


using namespace cocos2d;

using namespace CocosDenshion;


CCScene* HelloWorld::scene()

{

    // 'scene' is an autorelease object

    CCScene *scene = CCScene::create();

    

    // 'layer' is an autorelease object

    HelloWorld *layer = HelloWorld::create();


    // add layer as a child to scene

    scene->addChild(layer);


    // return the scene

    return scene;

}


// on "init" you need to initialize your instance

bool HelloWorld::init()

{

    //////////////////////////////

    // 1. super init first

    if ( !CCLayer::init() )

    {

        return false;

    }

#define particleTest 15

    switch (particleTest) {

        case 1:

        {

            //------爆炸粒子效果

            CCParticleSystem *particleSystem=CCParticleExplosion::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("stars.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

                                        

        }

            break;

        case 2:

        {

            //------火焰粒子效果

            CCParticleSystem *particleSystem=CCParticleFire::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 3:

        {

            //------花束粒子效果

            CCParticleSystem *particleSystem=CCParticleFlower::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 4:

        {

            //------烟花粒子效果

            CCParticleSystem *particleSystem=CCParticleFireworks::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 5:

        {

            //------星系粒子效果

            CCParticleSystem *particleSystem=CCParticleGalaxy::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 6:

        {

            //------流星粒子效果

            CCParticleSystem *particleSystem=CCParticleMeteor::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 7:

        {

            //------下雨粒子效果

            CCParticleSystem *particleSystem=CCParticleRain::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 8:

        {

            //------下雪粒子效果

            CCParticleSystem *particleSystem=CCParticleSnow::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("snow.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 9:

        {

            //------烟雾粒子效果

            CCParticleSystem *particleSystem=CCParticleSmoke::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 10:

        {

            //------漩涡粒子效果

            CCParticleSystem *particleSystem=CCParticleSpiral::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 11:

        {

            //------太阳粒子效果

            CCParticleSystem *particleSystem=CCParticleSun::create();

            particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 12:

        {

            //------粒子移动

            CCParticleSystem *particleSystemFree=CCParticleSun::create();

            particleSystemFree->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));           

            particleSystemFree->setAutoRemoveOnFinish(true);

            particleSystemFree->setPositionType(kCCPositionTypeFree);

            particleSystemFree->setPosition(ccp(90,160));

            addChild(particleSystemFree);

            

            CCParticleSystem *particleSystemRel=CCParticleSun::create();

            particleSystemRel->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystemRel->setAutoRemoveOnFinish(true);

            particleSystemRel->setPositionType(kCCPositionTypeRelative);

            particleSystemRel->setPosition(ccp(200,160));

            addChild(particleSystemRel);

            

            CCParticleSystem *particleSystemGrp=CCParticleSun::create();

            particleSystemGrp->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

            particleSystemGrp->setAutoRemoveOnFinish(true);

            particleSystemGrp->setPositionType(kCCPositionTypeGrouped);

            particleSystemGrp->setPosition(ccp(300,160));

            addChild(particleSystemGrp);

            

            //让当前Layer来回移动,观察两个移动模式不同的粒子特效

            CCFiniteTimeAction *move=CCMoveBy::create(3,ccp(290,0));

            CCFiniteTimeAction *back=move->reverse();

            this->runAction(CCSequence::create(move,back,NULL));

            

            

        }

            break;

        case 13:

        {

            //------创建自定义粒子

            CCParticleSystem *particleSystem=CCParticleSystemQuad::create("himiParticle.plist");

            particleSystem->setPosition(ccp(240,160));

            addChild(particleSystem);

            

        }

            break;

        case 14:

        {

            //------不使用CCParticleBatchNode创建粒子

            for (int i=0; i<10; i++) {

                CCParticleSystem *particleSystem=CCParticleSun::create();

                particleSystem->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png"));

                particleSystem->setPosition(ccp(150+i*20,160));

                addChild(particleSystem);


            }

            

        }

            break;

        case 15:

        {

            //------使用CCParticleBatchNode创建粒子

           

            CCTexture2D *texture=CCTextureCache::sharedTextureCache()->addImage("fire.png");

             CCParticleBatchNode *particleNode=CCParticleBatchNode::createWithTexture(texture);

            for (int i=0; i<10; i++) {

                CCParticleSystem *particleSystem=CCParticleSun::create();

                particleSystem->setTexture(texture);

                particleSystem->setPosition(ccp(150+i*20,160));

                particleNode->addChild(particleSystem);

                

            }

            addChild(particleNode);

        }

            break;


        default:

            break;

    }

   

    

    return true;

}

注意我们可以使用particle Designer来制作粒子,将plist,png加到工程目录下就可。http://particledesigner.71squred.com

你可能感兴趣的:(粒子系统)