当使用最大粒子设置为数字的SKEmitterNode时,文档说它将停止生成粒子。我的问题是,有没有办法告诉这件事发生了?我想在完成工作后从场景中删除粒子发射器。
答案 0 :(得分:7)
您可以计算发射器何时完成。
例如,如果numParticlesToEmit
设置为1000且particleBirthRate
为100,则粒子将在10秒后发出新粒子。然后,您需要添加particleLifeTime
一半particleLifeTimeRange
来计算粒子将保留在屏幕上的时间。之后,发射器不仅会发射新的粒子,而且还会从屏幕上移除最后和/或寿命最长的发射粒子。
假设em
是您的发射器:
CGFloat seconds = em.numParticlesToEmit / em.particleBirthRate +
em.particleLifetime + em.particleLifetimeRange / 2;
然后,您可以执行具有等待时间的选择器或运行具有给定延迟的操作,以在粒子发射器完成时得到通知。
答案 1 :(得分:0)
我无法找到检查活动粒子数的方法。我想也许有可能从它继承自SKNode的children属性,但这不起作用。
我注意到具有此blurb的SKEmitterNode的particleAction属性:
向粒子添加复杂动作会严重影响粒子发射器的性能。此外,由于粒子不作为您可以操作的显式节点存在,因此无法从现有粒子中删除操作。
您可以使用SKAction performSelector来通知您活动的粒子。当该流结束时,您可以假设没有剩余粒子。
无论如何都不是一个非常优雅或理想的解决方案,而且我自己会对更好的解决方案感兴趣。