首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有三维旋转的CAEmitterCell

具有三维旋转的CAEmitterCell
EN

Stack Overflow用户
提问于 2015-03-26 06:19:37
回答 1查看 1.7K关注 0票数 1

我试着用CAEmitterLayer & CAEmitterCell复制一些小纸片从顶部掉下来。

到目前为止,我得到了它的2D动画,但我很难让每个细胞在下降时旋转。

如何将随机旋转应用于每个粒子?到目前为止,我尝试了3D转换,但没有成功。

这就是我得到的:

代码语言:javascript
复制
-(void) configureEmitterLayer {
    self.emitterLayer = [CAEmitterLayer layer];
    self.emitterLayer.emitterPosition =  CGPointMake(self.backgroundContainer.bounds.size.width /2, 0);
    self.emitterLayer.emitterZPosition = 10;
    self.emitterLayer.emitterSize = self.backgroundContainer.bounds.size;
    self.emitterLayer.emitterShape = kCAEmitterLayerLine;

    CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];

    emitterCell.contents = (__bridge id)([UIImage imageWithColor:[UIColor whiteColor]].CGImage);

    emitterCell.lifetime = CGFLOAT_MAX;
    emitterCell.lifetimeRange = 4.0;
    emitterCell.birthRate = 2.5;

    emitterCell.color = [[UIColor colorWithRed:1.0f green:1.0 blue:1.0 alpha:1.0] CGColor];
    emitterCell.redRange = 1.0;
    emitterCell.blueRange = 1.0;
    emitterCell.greenRange = 1.0;
    emitterCell.alphaRange = 0.3;

    emitterCell.velocity = 10;
    emitterCell.velocityRange = 3;
    emitterCell.emissionRange = (CGFloat) M_PI_2;
    emitterCell.emissionLongitude = (CGFloat) M_PI;
    emitterCell.yAcceleration = 1;
    emitterCell.zAcceleration = 4;

    emitterCell.spinRange = 2.0;
    emitterCell.scale = 7.0;
    emitterCell.scaleRange = 4.0;

    self.emitterLayer.emitterCells = [NSArray arrayWithObject:emitterCell];

    [self.backgroundContainer.layer addSublayer:self.emitterLayer];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-26 19:07:38

这个库不使用发射器框架,但值得一看。UIDynamics被附加到各个对象上,以达到预期的效果。

iOS纸屑示例

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29272216

复制
相关文章

相似问题

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