iOS --粒子效果简单实现

作者: 浮桥小麦 | 来源:发表于2017-04-21 16:23 被阅读263次
    一生所爱.png
    前言 :整个粒子动画效果,学习学习... 看看演示效果
    lizixiaoguo.gif
    Pragma mark — NO.1 创建最简单的粒子效果
    #直接上代码了,效果都比较简单
    //最简单的粒子效果
    -(void)setupEmitter{
        
        // 1.创建发射器
        CAEmitterLayer *emitter = [[CAEmitterLayer alloc]init];
        
        // 2.设置发射器的位置
        emitter.emitterPosition = CGPointMake(self.view.center.x, self.view.bounds.size.height - 20);
        
        // 3.开启三维效果--可以关闭三维效果看看
        emitter.preservesDepth = YES;
        
        // 4.创建粒子, 并且设置粒子相关的属性
        // 4.1.创建粒子Cell
        CAEmitterCell *cell = [[CAEmitterCell alloc]init];
        
        // 4.2.设置粒子速度
        cell.velocity = 150;
        //速度范围波动50到250
        cell.velocityRange = 100;
        
        // 4.3.设置粒子的大小
        //一般我们的粒子大小就是图片大小, 我们一般做个缩放
        cell.scale = 0.7;
       
       //粒子大小范围: 0.4 - 1 倍大
        cell.scaleRange = 0.3;
        
        // 4.4.设置粒子方向
        //这个是设置经度,就是竖直方向 --具体看我们下面图片讲解
        //这个角度是逆时针的,所以我们的方向要么是 (2/3 π), 要么是 (-π)
        cell.emissionLongitude = -M_PI_2;
        cell.emissionRange = M_PI_2 / 4;
        
        // 4.5.设置粒子的存活时间
        cell.lifetime = 6;
        cell.lifetimeRange = 1.5;
        // 4.6.设置粒子旋转
        cell.spin = M_PI_2;
        cell.spinRange = M_PI_2 / 2;
        // 4.6.设置粒子每秒弹出的个数
        cell.birthRate = 20;
        // 4.7.设置粒子展示的图片 --这个必须要设置为CGImage
        cell.contents = (__bridge id _Nullable)([UIImage imageNamed:@"good5_30x30"].CGImage);
        // 5.将粒子设置到发射器中--这个是要放个数组进去
        emitter.emitterCells = @[cell];
        // 6.将发射器的layer添加到父layer中
        [self.view.layer addSublayer:emitter];
       
      
    }
    

    设置粒子方向讲解:cell.emissionLongitude (垂直方向) cell.emissionLatitude (水平方向)

    cell.emissionLongitude.png
    Pragma mark — NO.2 循环创建多个cell,实现真正的粒子效果
    //完整粒子效果
    -(void)setMultipleEmitterCell{
        
        // 1.创建发射器
        CAEmitterLayer *emitter = [[CAEmitterLayer alloc]init];
        
        // 2.设置发射器的位置
        emitter.emitterPosition = CGPointMake(self.view.center.x, self.view.bounds.size.height - 20);
        
        // 3.开启三维效果
        emitter.preservesDepth = YES;
       //创建多个粒子
        NSMutableArray *cellArr = [NSMutableArray array];
        for (int i = 0 ; i < 9; i++) {
        
            CAEmitterCell *cell = [[CAEmitterCell alloc]init];
            
            cell.velocity = 150;
            cell.velocityRange = 100;
            
            cell.scale = 0.7;
            cell.scaleRange = 0.3;
            
            cell.emissionLongitude = -M_PI_2;
            cell.emissionRange = M_PI_2 / 8;
            
            cell.lifetime = 6;
            cell.lifetimeRange = 1.5;
          
            cell.spin = M_PI_2;
            cell.spinRange = M_PI_2 / 2;
          
            cell.birthRate = 2;
         
            cell.contents = (__bridge id _Nullable)([UIImage imageNamed:[NSString stringWithFormat:@"good%d_30x30",i+1]].CGImage);
          
            //将创建出来的cell加入到数组中
            [cellArr addObject:cell];
            
            
        }
        // 5.将粒子设置到发射器中
        emitter.emitterCells = cellArr;
        
       // 6.将发射器的layer添加到父layer中
        [self.view.layer addSublayer:emitter];
    }
    
    尾声:有了这种粒子效果,在直播中可以应用. 调整发射方向可以做顶部掉落的雪花效果等等。。。

    项目地址:粒子效果

    相关文章

      网友评论

        本文标题:iOS --粒子效果简单实现

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