ios - SKEmitterNode 将粒子速度更改为已发射的粒子

标签 ios iphone objective-c ios7 sprite-kit

是否可以改变已经发射的粒子的速度? SKEmitterNode 有一个particleSpeed 属性,但这仅适用于将来发射的粒子。

例如,假设我们正在构建一个宇宙飞船模拟器。想象一下在星空之上渲染的宇宙飞船。星空是通过粒子文件创建的,使用 SKEmitterNode 渲染。通过这个模拟的宇宙飞船永远不会改变位置。 SKEmitterNode 由在负 x 方向上以 10 的恒定速度移动的粒子组成。为了模拟宇宙飞船的加速,如果能够改变已经发射的粒子的速度,那就太好了。到目前为止,如果粒子的速度发生变化,已经发射的粒子的速度将比速度变化后正在发射的粒子慢。

一种解决方案是定义一个粒子系统,该系统在例如 100 x 100 的范围内以 0 速度和 0 加速度发射粒子。该粒子系统将使用较低的 zPosition 值渲染以保持在背景中。为了模拟飞船运动,SKEmitterNode 的 x 位置将相对于飞船的速度发生变化。更多的 SKEmitterNode 被添加到场景之外,然后随着旧的 SKEmitterNode 滚落并被移除,滚动到 View 中。

我已经测试了该解决方案并且它有效,但我很好奇是否有人有更优雅的解决方案。

最佳答案

您可能可以创建第二个 SKEmitterNode具有相同风格但速度更快。然后运行 ​​SKActionSKAction sequence 2之间的过渡。

关于ios - SKEmitterNode 将粒子速度更改为已发射的粒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21839325/

相关文章:

ios - 切换到 xcode 6 GM - 突然 Controller 不再符合 UITableViewDataSource

ios - Swift 中的 AF 日期助手找不到成员 ISO8601

iphone - AppStore更新后iPhone App崩溃-CoreData

iphone - 无法使用 Google Mac 工具箱中的几个类编译我的应用程序

ios - 如何在 iOS 上实现单点登录

ios - j__objc_msgSend 和 objc_msgSend 有什么区别?

ios - 监听 iMessage 或短信通知 - 短信自动回复

ios - 在 Swift 类中初始化 AnyObject 属性?

iPhone URL 编码问题

ios - 使用 MapBox 在点之间路由