gpt4 book ai didi

swift - SKAction 仅更新最后一个实例化的 Sprite

转载 作者:搜寻专家 更新时间:2023-11-01 07:25:34 25 4
gpt4 key购买 nike

一边从背部手术中恢复,一边自学 spritekit。非常感谢您提供的任何帮助或指导。

我有一个函数可以添加一个带有子 SKEmitter 的“怪物” Sprite 。我想更新此发射器以“打开”和“关闭”SKEmitter。只要屏幕上只有一个 Sprite ,这个功能就会起作用。从该函数创建第二个节点的那一刻,第一个节点停止打开和关闭。

在我看来,SKAction 仅作用于最新节点。我只是无法告诉我如何解决这个问题。

我在 UI 中看到的示例。 SKEmitter On and Off

我的代码:

    flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")!
let newX = flameThrowerSplash.position.x - 475
let newY = flameThrowerSplash.position.y + (zombie1.size.height * 0.7)
let newLocation = CGPointMake(newX, newY)

flameThrowerSplash.position = newLocation
flameThrowerSplash.targetNode = currentScene

let wait = SKAction.waitForDuration(0.5)
let pauseEmitter = SKAction.runBlock({self.flameThrowerSplash.particleBirthRate = 0})
let startEmitter = SKAction.runBlock({ self.flameThrowerSplash.particleBirthRate = 455})
let wait2 = SKAction.waitForDuration(0.5)
let run = SKAction.sequence([wait, startEmitter,wait2, pauseEmitter])

zombie1.runAction(SKAction.repeatActionForever(run))

最佳答案

您似乎不想让 flameThrowerSplash 成为场景属性。

而不是这个

flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")!

只需将其声明为一个新变量

let flameThrowerSplash = SKEmitterNode(fileNamed: "flamesThrowerSplash.sks")

然后你可以将它独立地添加到每个僵尸。

你正在为每个新僵尸重新分配它..这就是它消失的原因。

关于swift - SKAction 仅更新最后一个实例化的 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com