iOS粒子效果(雪花,烟花)

作者: 幻想无极 | 来源:发表于2016-03-18 11:30 被阅读3318次

    雪花

    //雪花动画
    - (void)animation1 {
    
        //粒子发射器
        CAEmitterLayer *snowEmitter = [CAEmitterLayer layer];
        //粒子发射的位置
        snowEmitter.emitterPosition = CGPointMake(100, 30);
        //发射源的大小
        snowEmitter.emitterSize     = CGSizeMake(self.view.bounds.size.width, 0.0);;
        //发射模式
        snowEmitter.emitterMode     = kCAEmitterLayerOutline;
        //发射源的形状
        snowEmitter.emitterShape    = kCAEmitterLayerLine;
        
        //创建雪花粒子
        CAEmitterCell *snowflake = [CAEmitterCell emitterCell];
        //粒子的名称
        snowflake.name = @"snow";
        //粒子参数的速度乘数因子。越大出现的越快
        snowflake.birthRate     = 1.0;
        //存活时间
        snowflake.lifetime      = 120.0;
        //粒子速度
        snowflake.velocity      = -10;              // falling down slowly
        //粒子速度范围
        snowflake.velocityRange = 10;
        //粒子y方向的加速度分量
        snowflake.yAcceleration = 2;
          //周围发射角度
        snowflake.emissionRange = 0.5 * M_PI;       // some variation in angle
        //子旋转角度范围
        snowflake.spinRange     = 0.25 * M_PI;      // slow spin
        //粒子图片
        snowflake.contents      = (id) [[UIImage imageNamed:@"DazFlake"] CGImage];
        //粒子颜色
        snowflake.color         = [[UIColor redColor] CGColor];
        
        //设置阴影
        snowEmitter.shadowOpacity = 1.0;
        snowEmitter.shadowRadius  = 0.0;
        snowEmitter.shadowOffset  = CGSizeMake(0.0, 1.0);
        snowEmitter.shadowColor   = [[UIColor whiteColor] CGColor];
        
        // 将粒子添加到粒子发射器上
        snowEmitter.emitterCells = [NSArray arrayWithObject:snowflake];
        [self.view.layer insertSublayer:snowEmitter atIndex:0];
    }
    
    

    烟花

    //烟花动画
    - (void)animation2 {
        // Cells spawn in the bottom, moving up
       
        //分为3种粒子,子弹粒子,爆炸粒子,散开粒子
        CAEmitterLayer *fireworksEmitter = [CAEmitterLayer layer];
        CGRect viewBounds = self.view.layer.bounds;
        fireworksEmitter.emitterPosition = CGPointMake(viewBounds.size.width/2.0, viewBounds.size.height);
        fireworksEmitter.emitterSize    = CGSizeMake(viewBounds.size.width/2.0, 0.0);
        fireworksEmitter.emitterMode    = kCAEmitterLayerOutline;
        fireworksEmitter.emitterShape   = kCAEmitterLayerLine;
        fireworksEmitter.renderMode     = kCAEmitterLayerAdditive;
        fireworksEmitter.seed = (arc4random()%100)+1;
        
        // Create the rocket
        CAEmitterCell* rocket = [CAEmitterCell emitterCell];
        
        rocket.birthRate        = 1.0;
        rocket.emissionRange    = 0.25 * M_PI;  // some variation in angle
        rocket.velocity         = 380;
        rocket.velocityRange    = 100;
        rocket.yAcceleration    = 75;
        rocket.lifetime         = 1.02; // we cannot set the birthrate < 1.0 for the burst
        
        //小圆球图片
        rocket.contents         = (id) [[UIImage imageNamed:@"DazRing"] CGImage];
        rocket.scale            = 0.2;
        rocket.color            = [[UIColor redColor] CGColor];
        rocket.greenRange       = 1.0;      // different colors
        rocket.redRange         = 1.0;
        rocket.blueRange        = 1.0;
        rocket.spinRange        = M_PI;     // slow spin
        
        
        
        // the burst object cannot be seen, but will spawn the sparks
        // we change the color here, since the sparks inherit its value
        CAEmitterCell* burst = [CAEmitterCell emitterCell];
        
        burst.birthRate         = 1.0;      // at the end of travel
        burst.velocity          = 0;        //速度为0
        burst.scale             = 2.5;      //大小
        burst.redSpeed          =-1.5;      // shifting
        burst.blueSpeed         =+1.5;      // shifting
        burst.greenSpeed        =+1.0;      // shifting
        burst.lifetime          = 0.35;     //存在时间
        
        // and finally, the sparks
        CAEmitterCell* spark = [CAEmitterCell emitterCell];
        
        spark.birthRate         = 400;
        spark.velocity          = 125;
        spark.emissionRange     = 2* M_PI;  // 360 度
        spark.yAcceleration     = 75;       // gravity
        spark.lifetime          = 3;
        //星星图片
        spark.contents          = (id) [[UIImage imageNamed:@"DazStarOutline"] CGImage];
        spark.scaleSpeed        =-0.2;
        spark.greenSpeed        =-0.1;
        spark.redSpeed          = 0.4;
        spark.blueSpeed         =-0.1;
        spark.alphaSpeed        =-0.25;
        spark.spin              = 2* M_PI;
        spark.spinRange         = 2* M_PI;
        
        // 3种粒子组合,可以根据顺序,依次烟花弹-烟花弹粒子爆炸-爆炸散开粒子
        fireworksEmitter.emitterCells   = [NSArray arrayWithObject:rocket];
        rocket.emitterCells             = [NSArray arrayWithObject:burst];
        burst.emitterCells              = [NSArray arrayWithObject:spark];
        [self.view.layer addSublayer:fireworksEmitter];
    }
    

    下载链接
    https://pan.baidu.com/s/1dDPoeVR

    相关文章

      网友评论

        本文标题:iOS粒子效果(雪花,烟花)

        本文链接:https://www.haomeiwen.com/subject/eboclttx.html