SpriteKit粒子发射器多图像

14

我正在尝试在Swift中使用SKSprite粒子发射器。

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

是否有可能:拥有多张图像,并且发射器随机使用这些图像,而不仅仅使用一张图像?

谢谢。


如果我理解正确,不,你不能那么做。你能做的最多就是手动更改纹理(particleTexture),例如使用SKAction进行更改,但这样做,新的纹理将应用于所有现有的粒子。我想这并不是你想要的... - Whirlwind
是的,我已经尝试手动更改纹理,当然它会应用于所有粒子。但是谢谢你确认这是不可能的。那么我将尝试手动完成这个过程。 - gabrielpf
6
你可以做的一件事是在同一个位置放置多个粒子发射器,这就是我处理“五彩纸屑”类型效果的方法。 - Knight0fDragon
2
这是旧的方法,你可以将SKTexture视为图集,并让着色器选择纹理的部分。 - Knight0fDragon
1
有没有如何做到这一点的示例? - Joe
显示剩余3条评论
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子节点,并将所有常规发射器方法、操作和属性传播到子节点...具体取决于您的需求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接