美文网首页
粒子动画

粒子动画

作者: XiuFi | 来源:发表于2016-12-21 14:41 被阅读33次

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

    -(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上的速度

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

    相关文章

      网友评论

          本文标题:粒子动画

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