【问题标题】:SKEmitterNode not working when setting numParticlesToEmit to non-zero in Xcode?在 Xcode 中将 numParticlesToEmit 设置为非零时,SKEmitterNode 不起作用?
【发布时间】:2017-01-18 22:11:12
【问题描述】:

由于我们使用 Xcode 为 SKEmitterNode 定义 numParticlesToEmit 的值,因此没有代码可显示。

具体来说,我们在Emitter 部分使用Birthrate 属性旁边的Maximum 属性。

Birthrate 属性设置为 25。

如果我们将 Maximum 设置为 0,粒子会按预期显示。

但是,如果我们使用 50,则粒子不会出现。粒子出现在 Xcode 内部,因此 SKEmitterNode 的值似乎有效。运行应用程序时根本不会出现粒子。

我们在代码中所做的只是将 SKEmitterNode 添加到场景中。这是将节点添加到场景的代码:

    self.addChild(fireworksEmitter)

除了Maximum 属性之外没有其他变化。

建议?

【问题讨论】:

  • 两个问题,当您将最大属性设置为 50 时,1) 向场景中添加发射器时,您是否看到节点数增加? 2) 你看到发射器在粒子编辑器中工作了吗?
  • @Whirlwind 是的,它可以在粒子编辑器中使用,抱歉,问题中并不清楚(the particles appear inside of Xcode 的含义)。关于节点数的好问题,将检查。
  • @Whirlwind 节点数仅增加 1,因此似乎进一步证明了 SKEmitterNode 正在被添加。有什么线索吗?
  • 暂时没有。我建议你为这个特定的发射器截取你的粒子编辑器。

标签: xcode sprite-kit particle-system skemitternode


【解决方案1】:

也许resetSimulation() 的奇妙之处正是你所缺少的。

使用它,您可以设置值,并使用新值或其现有值“重新启动”粒子发射器。这对于武器效果和粒子发射器的其他短时间发射非常有用。

这也意味着您不需要实例化粒子系统,只需放置它,然后在需要时重新启动它,如果您使用的是具有有限粒子发射率的系统。

这就是您正在利用的东西 - numParticlesToEmitbirthRate 混合所固有的有限粒子发射率。

尝试触发resetSimulation() 几次,看看会发生什么。希望对您有所帮助。

【讨论】:

  • 谢谢!你无处不在。 :) 已经尝试过resetSimulation,但不幸的是,这没有帮助。
  • 这确实应该这样做。并且是使用这种“重置”粒子的“建议”方式。这不是执行此操作的经典方法,但它应该像脉冲粒子系统一样工作。能分享一下粒子系统场景吗?我会努力解决的。粒子系统是我真正了解的为数不多的东西之一。
  • 话虽如此……我对 3D 粒子系统的了解比对 2D 粒子系统的了解要多得多……这应该是 3D 粒子系统的更简单的小表亲。我已经对 SpriteKit 的粒子引擎发痒了几次,但我非常了解 SceneKit 的系统。它们有些相似……有些相似。这是一个有趣的挑战,我想更深入地研究一下。脉冲粒子引擎应该非常简单,并且工作得很好。
【解决方案2】:

听起来粒子已经运行并由于某种原因消失了。当最大值为 0 时,您仍然可以看到它们,因为它可以让它永远运行。是否有任何代码可以将粒子系统添加到场景中,还是全部通过场景编辑器完成?

我在实例化发射器节点时遇到了问题。如果节点是实例变量,它不会显示,但如果我在将节点添加到场景之前创建了节点,它会正确显示。

【讨论】:

  • 当然,已发布,但同样,除了在 Xcode 的粒子编辑器中更改 Maximum 属性外,没有任何变化。
  • 你也可以发布你实例化发射器节点的代码吗?前段时间我遇到过这样的问题,它与我何时以及如何实例化它有关。
  • @Crashalot,尝试在将发射器节点添加到场景之前创建发射器节点(而不是作为实例变量)。
猜你喜欢
  • 2019-06-13
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2018-08-25
  • 2020-06-01
  • 2014-11-21
相关资源
最近更新 更多