粒子效果后如何从屏幕上删除精灵节点
How to remove sprite node from screen after particle effect
func collisionHappened() {
let explosion = SKEmitterNode(fileNamed: "rocketExplosion")
rocket.addChild(explosion)
let sceneChange = gameOverScene(size: self.size)
sceneChange.scaleMode = scaleMode
let reveal = SKTransition.crossFadeWithDuration(3)
self.view?.presentScene(sceneChange, transition: reveal)
reveal.pausesOutgoingScene = false
}
我已将我的粒子效果附加到发生碰撞时我想要 "explode" 的节点,从而结束了游戏。然后我希望场景更改为游戏结束场景。如果传出场景暂停,则粒子效果不会发生,但现在我将其设置为不暂停,碰撞不断发生,并且游戏结束场景永远不会出现,因为游戏会不断返回传出场景。为了克服这个问题,我想我可以添加:
rocket.removeFromParent()
这样就不会再发生碰撞,但这意味着粒子效果不会发生。有没有办法让它发生粒子效应,然后移除火箭以便我可以同时拥有两者?
我希望这是有道理的!
如果我对你的问题的理解正确,你可以将粒子效果添加为 SKScene
子类的子类而不是 rocket
的子类。因此,当您移除火箭时,粒子效果不会也被移除。只需确保将 SKEmitter
的位置设置为 rocket
的位置,以使粒子出现在正确的位置。例如:
func collisionHappened() {
let explosion = SKEmitterNode(fileNamed: "rocketExplosion")
explosion.position = rocket.position
// I'm assuming 'self' is your SKScene subclass.
self.addChild(explosion)
let sceneChange = gameOverScene(size: self.size)
sceneChange.scaleMode = scaleMode
let reveal = SKTransition.crossFadeWithDuration(3)
self.view?.presentScene(sceneChange, transition: reveal)
reveal.pausesOutgoingScene = false
}
func collisionHappened() {
let explosion = SKEmitterNode(fileNamed: "rocketExplosion")
rocket.addChild(explosion)
let sceneChange = gameOverScene(size: self.size)
sceneChange.scaleMode = scaleMode
let reveal = SKTransition.crossFadeWithDuration(3)
self.view?.presentScene(sceneChange, transition: reveal)
reveal.pausesOutgoingScene = false
}
我已将我的粒子效果附加到发生碰撞时我想要 "explode" 的节点,从而结束了游戏。然后我希望场景更改为游戏结束场景。如果传出场景暂停,则粒子效果不会发生,但现在我将其设置为不暂停,碰撞不断发生,并且游戏结束场景永远不会出现,因为游戏会不断返回传出场景。为了克服这个问题,我想我可以添加:
rocket.removeFromParent()
这样就不会再发生碰撞,但这意味着粒子效果不会发生。有没有办法让它发生粒子效应,然后移除火箭以便我可以同时拥有两者?
我希望这是有道理的!
如果我对你的问题的理解正确,你可以将粒子效果添加为 SKScene
子类的子类而不是 rocket
的子类。因此,当您移除火箭时,粒子效果不会也被移除。只需确保将 SKEmitter
的位置设置为 rocket
的位置,以使粒子出现在正确的位置。例如:
func collisionHappened() {
let explosion = SKEmitterNode(fileNamed: "rocketExplosion")
explosion.position = rocket.position
// I'm assuming 'self' is your SKScene subclass.
self.addChild(explosion)
let sceneChange = gameOverScene(size: self.size)
sceneChange.scaleMode = scaleMode
let reveal = SKTransition.crossFadeWithDuration(3)
self.view?.presentScene(sceneChange, transition: reveal)
reveal.pausesOutgoingScene = false
}