【问题标题】:Create a circle of particles using CAEmitterLayer使用 CAEmitterLayer 创建一个粒子圈
【发布时间】:2012-10-19 10:48:56
【问题描述】:

我正在尝试使用 UIKit CAEmitterLayer 在用户触摸屏幕时向他提供反馈。 我想做的是一圈粒子,它会随着时间的推移而增长。

我在想,如果我以相同的速度(没有速度范围)设置粒子,粒子将从中心点以相同的速度移动,因此,画一个圆。

但是,速度看起来仍然是随机的,介于 0 和我选择的速度之间。

有没有办法强制速度为精确值?

    dragEmitter.emitterPosition = CGPointMake(50, 50);
dragEmitter.emitterSize = CGSizeMake(1, 1);

CAEmitterCell* fire = [CAEmitterCell emitterCell];
fire.birthRate = 10;
fire.lifetime = 0.7;
fire.lifetimeRange = 0;
fire.color = [[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0] CGColor];
fire.contents = (id)[[UIImage imageNamed:@"Particles_fire.png"] CGImage];
[fire setName:@"fire"];

fire.velocity = 50;
fire.velocityRange = 0;
fire.emissionRange = 2*M_PI;
fire.emissionLatitude = 0;
fire.emissionLongitude = 0;

感谢您的帮助!

【问题讨论】:

    标签: iphone objective-c caemitterlayer


    【解决方案1】:

    坦率地说,很难想象 100% 与您想要的粒子系统图片相同,但我认为它已经接近几个月前所需要的。请尝试对发射器单元进行以下设置,或尝试根据以下设置尝试使用值:

        .
        .
        emitter.emitterPosition = CGPointMake(...);
        emitter.renderMode = kCAEmitterLayerBackToFront;
    
        CAEmitterCell* star = [CAEmitterCell emitterCell]
        star.emissionLongitude = M_PI*2;
        star.emissionRange = M_PI*2;
        star.lifetime = 2.5;
        star.birthRate = 20;
        star.velocity = 120;
        star.velocityRange = 20;
        star.color = [UIColor colorWithRed:49.0/255.0 green:168.0/255.0 blue:181.0/255.0 alpha:0.6].CGColor;
        star.contents = (id)image.CGImage;
        star.redRange = 0.1;
        star.greenRange = 0.1;
        star.blueRange = 0.1;
        .
        .
    

    【讨论】:

    • 我更想做一些类似涟漪效应的事情。随着时间的推移越来越大的同心圆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多