【发布时间】:2014-12-08 16:04:16
【问题描述】:
在我的 SK 游戏中,我有火箭发射,每个火箭都有一个 SKEmitterNode,它会产生烟雾轨迹效果。一旦火箭击中我称之为removeFromParent 的东西,这也会移除发射器,从而立即移除烟雾痕迹。我希望烟雾痕迹一直存在,直到颗粒消散。
我不明白为什么即使 targetNode 设置为 self.scene 也不会发生这种情况。我已经获取了发射器节点,创建了一个包含所有 children 的数组,并将 count 称为 NSLog 它有多少个子节点并返回......零。似乎所有粒子都应该是场景本身的子级,所以当从场景中移除发射器时,它的粒子不应该是,因为它们不是它的子级。
我尝试了很多很多不同的方法,但都没有奏效。
我想要的只是每个火箭都有一个发射器,它会留下一条烟雾轨迹,当火箭被摧毁时,烟雾轨迹会随着它消散而保留。但是我不能在火箭上调用 removeFromParent 而不破坏它的发射器!
【问题讨论】:
-
您可以手动使烟雾看起来消散。这个想法是......火箭击中目标,强制延迟,减少发射的节点数量,强制延迟,减少发射的节点数量,重复直到需要然后移除发射器。您将通过一系列 skaction 来实现这一点。如果您对这种方法感兴趣,我可以在一小时左右用代码添加答案。它不需要太多代码。
-
使emitterNode成为火箭的属性。将发射器作为子项添加到场景中。当火箭爆炸时,取出火箭。或者,将发射器保留为火箭的子级,只需将火箭的 alpha 设置为 0,使其完全透明,然后在发射器消散后移除火箭。
-
第一种方法仍然不会产生消散效果。第二种方法也不会产生消散效果(它的效果与移除发射器时粒子消失的效果相同),并且还会使您的火箭容易受到接触事件和碰撞的影响,除非您更改 categoryBitMask。
-
我刚刚解决了第一个问题。显然,如果他想降低它,他必须通过代码减少particleBirthRate 来做到这一点。改变碰撞状态也是给定的。我的两个解决方案都解决了该主题的问题。每个额外的问题都应该成为单独的问题。不想为他编写游戏代码,这就是为什么我只是提出解决最初问题的建议。两者都确实有效。移除发射器后保留发射器粒子 - 不可能。