Как удалить спрайт-узел с экрана после эффекта частиц
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
}
Я прикрепил свой эффект частиц к узлу, который я хочу "взорвать", когда происходит столкновение, тем самым заканчивая игру. Затем я хочу, чтобы сцена изменилась на игру поверх сцены. Если исходящая сцена приостанавливается, то эффект частиц не возникает, но теперь я установил его, чтобы он не приостанавливался, столкновения продолжаются, и игра поверх сцены никогда не появляется, поскольку игра продолжает возвращаться к исходящей сцене. Чтобы преодолеть это, я подумал, что могу добавить:rocket.removeFromParent()
так что больше не может произойти столкновений, НО это означает, что эффект частиц не происходит. Есть ли способ сделать так, чтобы эффект частиц происходил, затем ракета была удалена, чтобы я мог иметь и то и другое? Я надеюсь это имеет смысл!
1 ответ
Если я правильно понимаю ваш вопрос, вы можете добавить эффект частиц, как ребенок вашего 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
}