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动作中添加发射器来解决这个问题。

advance time的唯一作用是将发射器动作及时向前推进,当你想要发射器在不同的时间发射时不要使用这个,在你将发射器添加到场景之前,通过设置paused为true, particleSpeed为0并调用resetSimulation()来停止它,这保证了我们在添加粒子发射器时它不会运行。然后使用SKAction来确定何时需要取消发射器并将其速度设置回默认速度

最新更新