前言 :整个粒子动画效果,学习学习... 看看演示效果
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 (水平方向)
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];
}
尾声:有了这种粒子效果,在直播中可以应用. 调整发射方向可以做顶部掉落的雪花效果等等。。。
项目地址:粒子效果