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