ios - 具有 3D 旋转功能的 CAEmitterCell

标签 ios objective-c core-animation caemitterlayer caemittercell

我正在尝试使用 CAEmitterLayer 和 CAEmitterCell 重现从顶部掉落的小纸片效果。

到目前为止,我得到了它的 2D 动画,但是我很难让每个单元格在掉落时旋转。

如何对每个粒子应用随机旋转?我尝试过 3D Transform,到目前为止没有成功。

这就是我得到的:

animation gif

-(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];
}

最佳答案

该库不使用发射器框架,但值得一看以获取灵感。 UIDynamics 附加到各个对象以实现所需的效果。

iOS confetti example

关于ios - 具有 3D 旋转功能的 CAEmitterCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58511718/

相关文章:

ios - 如何从 iOS 通讯录中获取 Facebook 和自定义社交地址?

ios - 访问包装在单独类中的静态方法中的 NSURLSessionTasks 的委托(delegate)

ios - 我怎样才能防止用户点击按钮两次,这样当用户关闭应用程序并打开他仍然无法点击

ios - Objective-C block : How to set an object to nil which uses block-based callback mechanism?

iphone - 需要有关 iPhone 上的动画的帮助

javascript - 首次访问 iOS9 上的 Safari 时页面显示为空白但可选择

ios - -[NSRecursiveLock dealloc] : lock understanding the stack trace and ios debugging

objective-c - UISearchDisplayController 在多个数组中搜索

ios - 隐式属性动画不适用于CAReplicatorLayer吗?

objective-c - 如何在 NSImageView 中实现 NSImage 的连续旋转?