SKEmitterNode具有不同的模拟时间

时间:2016-08-15 13:14:48

标签: swift sprite-kit skemitternode

我在项目中创建了一个模板粒子文件,并希望将它与不同的纹理图像一起使用。

我已创建并使用此方法...

func addEmitterWithTexture(image: UIImage, size: CGSize, advanceTime: NSTimeInterval, scene: SKScene) {
    let emitter = SKEmitterNode(fileNamed: "MyParticle")!
    scene.addChild(emitter)
    emitter.particleTexture = SKTexture(image: image)
    emitter.position = CGPoint(x: size.width * 0.5, y: size.height * 0.5)
    emitter.particlePositionRange = CGVector(dx: size.width, dy: size.height)
    emitter.advanceSimulationTime(advanceTime)
    emitter.zPosition = 3.0
}

我希望图像能够在不同时间弹出,所以我使用advanceSimulationTime。但它似乎没有效果。所有图像使用相同的模拟时间。

我猜这是因为模拟时间在父母身上?

修改 嗯......似乎并非如此。

我想知道所有发射器是否都在全局模拟计时器上?在这种情况下,有没有办法在不同的时间启动发射器?

是这样的,还是我做错了什么?

我最终通过在场景中使用waitAction并在等待后在runBlock操作中添加发射器来解决它。

1 个答案:

答案 0 :(得分:0)

提前时间唯一能做的就是快速向前快进发射器动作,当你想让发射器在不同时间发射时,不要使用它,在将发射器添加到场景之前,通过设置{{1 }}到true,paused到0并调用particleSpeed这使我们保证当添加粒子发射器时它不会运行。然后使用resetSimulation()来确定何时需要取消暂停发射器并将其速度设置回默认速度