ios - SpriteKit 中火箭的烟雾效果

标签 ios cocoa-touch sprite-kit

我正在设计一款游戏,在我的游戏中,火箭被发射。我创建了一个发射器,对其进行了配置,当我的火箭发射时,它会将发射器添加到火箭中。问题是,火箭移动得相当快,而且粒子似乎跟随火箭的运动——我的意思是,火箭不是在后面留下烟雾的“痕迹”,“烟雾”看起来是一样的就好像火箭没有移动一样,我猜是因为它是火箭的 child 。

我想到的解决问题的唯一方法是: - 创建一个 ivar 或属性来保存火箭的当前位置并每帧更新它 -当火箭发射时,将发射器的子项添加到场景中,而不是火箭中 - 将其位置放置在火箭的位置 -更新时,跟随火箭

然而,这似乎在计算上极其昂贵,要检查火箭是否存在,如果存在则获取其位置,为该位置创建一个新的 CGPoint,并将发射器位置设置为每个帧上的新点。此外,屏幕上同时显示多于一枚火箭的选项也很少。

还有其他更优雅的解决方案吗?

最佳答案

您需要将发射器的 targetNode 属性设置为您希望烟雾停留的 SKNodeSKScene。该属性设置发射器粒子将成为其子节点的节点,这样当火箭移动时,发射的粒子会停留在同一个位置。

注意:发射器本身应该仍然是火箭的子级。

SKEmitterNode.targetNode docs

关于ios - SpriteKit 中火箭的烟雾效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25299058/

相关文章:

iphone - [NSThread detachNewThreadSelector :] and -performSelectorInBackground 之间的区别

ios - 如何将多个节点添加到场景并一次移动所有节点。 swift 。 SpriteKit

swift - 场景之间的 SpriteKit 过渡无需重置游戏

ios - Xcode 8 - 丢失文件警告

cocoa-touch - 启用预览和分页的 UICollectionView

iphone - 使用图层和 Grand Central Dispatch 渲染 UIButtons 的最快方法?

swift - 无法使用 Spritekit Swift 创建一个将您转换到主菜单的按钮

ios - 如何从 GTLDriveFile 获取 google 驱动器文件的 url?

ios - UIButton 的 layer.cornerRadius 移除按钮标题的可见性

iOS 堆栈跟踪不准确