zoukankan      html  css  js  c++  java
  • 粒子系统和11种系统自带的粒子特效


    粒子系统有两部分组成:粒子粒子发射器
    粒子发射器共同属性:
    TotalParticles 粒子总数
    Duration 发射时间
    EmissionRate 发射速率
    EmitterMode 发射器模式 Gravity(重力) 和 Radius(半径)
    Position 发射器位置
    PosVar 发射器位置浮动
    PositionType 设置粒子与发射器的相对位置
      三种模式: 自由模式:FREE(粒子不与发射器联系)
        相对模式:RELATIVE(粒子发射器随粒子节点的移动而移动)
          相对模式:GROUPED(粒子群随发射器的移动而移动)
    Texture 粒子纹理图片

    重力发射器属性:
    Gravity: 重力
    Speed: 速度
    SpeedVar: 速度变化率
    RadialAccel: 径向加速度
    RadialAccelVar: 径向加速度变化率
    TangentialAccel: 切向加速度

    TangentialAccelVar: 切向加速度变化率

    半径发射器属性:
    StartRadius: 起始半径
    StartRadiusVar: 起始半径浮动值
    EndRadius: 结束半径
    EndRadiusVar: 结束半径浮动值
    RotatePerSecond: 旋转角速度
    RotatePerSecondVar: 旋转角速度变化值

    粒子属性:
    Life: 生存时间
    LifeVar:
    StartSize: 起始大小
    StartSizeVar:
    EndSize: 结束大小
    EndSizeVar:
    StartColor: 开始颜色
    StartColorVar:
    EndColor: 结束颜色
    EndColorVar:
    StartSpin: 起始旋转角度
    StartSpinVar:
    EndSpin: 结束旋转角度
    EndSpinVar:
    Angle: 发射角度
    AngleVar:

    粒子系统的使用:
    一. 使用系统自带的效果
    auto snow = ParticleSnow::create();
    snow->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png"));
    snow->setPosition(Point(200,200));
    this->addChild(snow);
    系统自带的十一种效果如下:

     1. 雪花特效

    ParticleSystem* ps = ParticleSnow::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("snow.png"));
    ps->setPosition(Point(200,200));//生成的雪花的起始位置
    this->addChild(ps,10);

    2. 烟花效果 
    ParticleSystem* ps = ParticleFireworks::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);

    3. 下雨效果 
    ParticleSystem* ps = ParticleRain::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    4. 烟雾 
    ParticleSystem* ps = ParticleSmoke::create();//效果实在不咋地
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    5、爆炸 
    ParticleSystem* ps = ParticleExplosion::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    6、螺旋 
    ParticleSystem* ps = ParticleSpiral::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    7、流星(用彗星来描述会更贴切一点,因为它拖着一条长长的尾巴) 
    ParticleSystem* ps = ParticleMeteor::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    8、星云 
    ParticleSystem* ps = ParticleGalaxy::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    9、太阳 
    ParticleSystem* ps = ParticleSun::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);
    10、火焰 
    ParticleSystem* ps = ParticleFire::create();
    ps->setTexture(Director::getInstance()->getTextureCache()->addImage("CloseSelected.png"));
    ps->setPosition(Point(200,200));
    this->addChild(ps,10);

    11.花束效果

        ParticleSystem* particleSystem = ParticleFlower::create();  

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

        addChild(particleSystem); 

     二. 代码自定义粒子系统
        auto m_emitter = new ParticleSystemQuad();
        m_emitter->initWithTotalParticles(900);//900个粒子对象
        m_emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("snow1.png"));
        //设置发射粒子的持续时间-1表示一直发射, 0没有意义, 其他值表示持续时间
        m_emitter->setDuration(-1);
        //设置中心方向, 这个点是相对发射点, x正方向为右, y正方向为上
        m_emitter->setGravity(Point(0, -40));
        //设置角度, 角度的变化率 (Var 是浮动值, 若初始值是5, var是1, 那么会在4~6范围内浮动)
        m_emitter->setAngle(0);
        m_emitter->setAngleVar(360);
        //设置运动速度, 运动速度的变化率
        m_emitter->setSpeed(50);
        m_emitter->setSpeedVar(10);
        //设置径向加速度, 径向加速度的变化率
        m_emitter->setRadialAccel(50);
        m_emitter->setRadialAccelVar(0);
        //设置粒子的切向加速度, 切向加速度的变化率
        m_emitter->setTangentialAccel(30);
        m_emitter->setTangentialAccelVar(0);
        
    
        //设置粒子的初始位置, 位置的变化率
        m_emitter->setPosition(visibleSize.width, visibleSize.height);
        m_emitter->setPosVar(Point(visibleSize.width, 0));
        //设置粒子生命, 生命的变化率
        m_emitter->setLife(4);
        m_emitter->setLifeVar(2);
        //设置粒子开始的自旋转速度, 开始自旋转速度的变化率
        m_emitter->setStartSpin(90);
        m_emitter->setStartSpinVar(120);
        //设置结束的时候的自旋转以及自旋转的变化率
        m_emitter->setEndSpin(90);
        m_emitter->setEndSpinVar(160);
        Color4F cc;
        cc.a = 1.0f;
        cc.b = 255.0f;
        cc.g = 255.0f;
        cc.r = 255.0f;
        Color4F cc2;
        cc2.a = 0;
        cc2.b = 0;
        cc2.g = 0;
        cc2.r = 0;
        //设置开始的时候的颜色以及颜色的变化率
        m_emitter ->setStartColor(cc);
        m_emitter->setStartColorVar(cc2);
        //设置结束的时候的颜色以及颜色的变化率
        m_emitter->setEndColor(cc);
        m_emitter->setEndColorVar(cc2);
        //设置开始时候粒子的大小, 以及大小的变化率
        m_emitter->setStartSize(30);
        m_emitter->setStartSizeVar(0);
        //设置粒子结束时候的大小, 以及大小的变化率
        m_emitter->setEndSize(20.0f);
        m_emitter->setEndSizeVar(0);
        //设置每秒产生粒子数
        m_emitter->setEmissionRate(100);
        addChild(m_emitter);
    
    

    三. 使用plist文件

        auto crash = ParticleSystemQuad::create("explode.plist");
        crash->setDuration(-1);
        crash->setPosition(Point(300, 200));
        this->addChild(crash);
     
     
  • 相关阅读:
    django中使用celery
    django中使用Redis
    Nginx编译和安装(超简单版)
    cookie和session
    forms组件
    反向解析(reverse())
    QuerySet对象
    models.py里的字段以及参数详解
    Q查询和F查询
    JgrId 无数据返回设置
  • 原文地址:https://www.cnblogs.com/lion-witcher/p/6021845.html
Copyright © 2011-2022 走看看