首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CAEmitterLayer创建粒子圆

使用CAEmitterLayer创建粒子圆
EN

Stack Overflow用户
提问于 2012-10-19 18:48:56
回答 1查看 1.1K关注 0票数 0

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

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

然而,它看起来速度仍然是随机的,在0和我选择的速度之间的范围内。

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

代码语言:javascript
复制
    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;

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2012-10-19 20:36:52

坦率地说,很难想象你想要的粒子系统是100%相同的图片,但我认为它已经接近几个月前所需要的了。请尝试以下发射器单元的设置,或尝试基于以下设置的值进行实验:

代码语言:javascript
复制
    .
    .
    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;
    .
    .
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12972658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档