我正在尝试将 SKSprite 粒子发射器与 Swift 一起使用。
但我想在我的发射器中使用许多不同的纹理。
是否有可能:有许多图像,并且发射器随机使用图像,而不是只使用一个图像?
谢谢
我正在尝试将 SKSprite 粒子发射器与 Swift 一起使用。
但我想在我的发射器中使用许多不同的纹理。
是否有可能:有许多图像,并且发射器随机使用图像,而不是只使用一个图像?
谢谢
假设您使用一个纹理设计了发射器并将其保存为“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
子代,并将所有常用的发射器方法、动作和属性传播给子代……这取决于您的需要。