粒子动画

2016-12-21  本文已影响33人  XiuFi

公司做了一个类似小游戏的项目,背景需要放个流星雨效果粒子动画,详细的不多说,主要自己纪录学习,上代码。

-(void)setupCAEmitterLayer{

CAEmitterLayer *rockEmitter = [CAEmitterLayer layer];

//发射源位置

rockEmitter.emitterPosition = CGPointMake(SCREENWIDTH, 0);

rockEmitter.emitterSize = CGSizeMake(SCREENWIDTH, 0);

rockEmitter.emitterShape = kCAEmitterLayerLine;

rockEmitter.emitterMode = kCAEmitterLayerOutline;

rockEmitter.renderMode =  kCAEmitterLayerOldestLast;

CAEmitterCell *rock = [CAEmitterCell emitterCell];

rock.birthRate = 10 ;

rock.lifetime = 6;

//粒子透明速度

rock.alphaSpeed = -0.1;

//粒子速度

rock.velocity = 280;

rock.velocityRange = 100;

//角度

// rock.emissionRange = 0;

rock.emissionLongitude = - 3*M_PI_4;

rock.emissionRange = -M_PI_4/2;

rock.contents = (id)[[UIImage imageNamed:@"rocktest"] CGImage];

rock.scaleRange = 0.5;

rock.scale = 0.5;

rockEmitter.emitterCells = [NSArray arrayWithObjects:rock, nil];

// [rockEmitter setValue:@500 forKeyPath:@"emitterCells.explosion.birthRate"];

//    rockEmitter.transform = CATransform3DMakeRotation(-M_PI/4, 0, 0, 1);

[self.view.layer addSublayer:rockEmitter];

self.rockEmitter = rockEmitter;

}

具体的不多说,网上好多大神们比我的详细,具体有几点注意的想提一下

1.是layer层动画,可以和transform3D结合使用,但具体都理解发射源,发射模式这两个概念就可以了

2.有range后缀的都是范围变量,例如速度的变量,角度的变量

3.增加的方式是发射源的一个属性emitterCells 添加粒子,可以添加很多种不同的粒子

4.粒子的速度cell.velocity是发射方向cell.emissionLongitude上的速度

差不多这几点要注意的.纪录下来,待跟新....

上一篇下一篇

猜你喜欢

热点阅读