Как удалить спрайт-узел с экрана после эффекта частиц

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
}
Другие вопросы по тегам