当我在屏幕上移动我的 SKEmitterNode 时,如何使 SKEmitter 粒子相对于背景保持不变?

How to make SKEmitter particles stay relative to the background when I move my SKEmitterNode around the screen?

我觉得这应该是一个非常简单的问题,但我环顾四周,它似乎只是自动为每个人工作。但是由于某些原因,当我在屏幕上移动粒子发射器时,粒子会随之移动,并且粒子发射器节点后面没有任何轨迹。

我正在为屏幕底部周围的角色 运行 制作一个 SpriteKit 游戏,他有一个提升能力,当他提升时会在他身后释放小气泡颗粒,因为他在水下。但是粒子并不是相对于屏幕停留的,它们是相对于玩家并随着他移动的。

下面是一些添加增强气泡的代码:

func addBoostBubbles(){
    boostBubbles = SKEmitterNode(fileNamed: "bubbleBoost")!
    boostBubbles.particlePositionRange = CGVector(dx: player.frame.size.width, dy: player.frame.size.height)
    boostBubbles.position = player.position
    boostBubbles.zPosition = 0
    self.addChild(boostBubbles)
}

我调用这个函数来创建发射器节点并将其设置到玩家的位置。

然后在 didSimulatePhysics 函数中移动气泡的位置我有这个:

boostBubbles.position.x += xAcceleration

我在屏幕上看到气泡并且发射器节点正在移动到正确的位置,但我希望它们相对于背景,这样气泡就会慢慢地漂浮在玩家身后。

如有任何帮助,我们将不胜感激!!!!

将发射器的 targetNode 属性 设置为背景节点。在 addBoostBubbles 中,尝试添加行:

boostBubbles.targetNode = <background node name> 

https://developer.apple.com/documentation/spritekit/skemitternode

targetNode - The target node that renders the emitter’s particles.

这会导致粒子呈现为就好像它们是背景的子项一样。

如果您没有后台节点,则需要添加一个。