14

我正在尝试将 SKSprite 粒子发射器与 Swift 一起使用。

但我想在我的发射器中使用许多不同的纹理。

是否有可能:有许多图像,并且发射器随机使用图像,而不是只使用一个图像?

谢谢

4

1 回答 1

1

假设您使用一个纹理设计了发射器并将其保存为“original.sks”,并且您有一个带有纹理的数组,称为textures

var emitters:[SKEmitterNode] = []
for t in textures {
    let emitter = SKEmitterNode(fileNamed: "original.sks")!
    emitter.particleTexture = t
    emitter.numParticlesToEmit /= CGFloat(emitters.count)
    emitter.particleBirthRate /= CGFloat(emitters.count)
    emitters.append(emitter)
}

现在你有一个发射器阵列而不是一个发射器。无论您对发射器做什么,只需使用数组即可:

// What you'd do with a single emitter:
addChild(someNormalEmitter)
someNormalEmitter.run(someAction)
...
    

// How to do the same with the array:
emitters.forEach {
    self.addChild($0)
    $0.run(someAction)
...
}

当然,您也可以子类化SKEmitterNode,使其包含其他SKEmitterNode子代,并将所有常用的发射器方法、动作和属性传播给子代……这取决于您的需要。

于 2020-10-31T23:42:58.590 回答