首页 > 解决方案 > CAEmitterLayer - 从边界向内发射

问题描述

我有一个粒子动画:

  private func createParticles() {
        // setup emitter
        let emitter = CAEmitterLayer()
        emitter.emitterSize = self.bounds.size
        emitter.emitterShape = .rectangle
        emitter.emitterMode = .surface
        emitter.emitterDepth = 1.0
        emitter.renderMode = .oldestFirst
        emitter.emitterPosition = CGPoint(x: bounds.width / 2, y: bounds.height / 2)

        layer.addSublayer(emitter)

        let particle1 = createParticle(rate: 1000, alpha: 1, scale: 0.2, velocity: 25)
        let particle2 = createParticle(rate: 200, alpha: 0.5, scale: 0.1, velocity: 10)
        let particle3 = createParticle(rate: 200, alpha: 1, scale: 0.1, velocity: 5)
        emitter.emitterCells = [particle1, particle2, particle3]
        
    }

    func createParticle(rate: Float, alpha: CGFloat, scale: CGFloat, velocity: CGFloat) -> CAEmitterCell {
        let cell = CAEmitterCell()
        cell.contents = UIImage(named: "Spark")?.cgImage
        cell.birthRate = rate
        cell.lifetime = 2
        cell.color = UIColor(white: 1, alpha: alpha).cgColor
        cell.alphaSpeed = -1/cell.lifetime
        cell.scale = scale
        cell.scaleRange = 0.2
        cell.alphaRange = 0.2
        cell.velocity = velocity
        cell.velocityRange = velocity * 0.3
        cell.emissionRange = 0.4
        return cell
    }

我希望粒子从层的边界发射并向内发射。这可能吗?

标签: iosswiftxcodecaemitterlayer

解决方案


推荐阅读