Не могу пройти с анимацией в SpriteKit - PullRequest
0 голосов
/ 07 декабря 2018

У меня простая игровая сцена, и я хочу сбросить ее, когда игра закончится.Я использую .sks для GameScene. view.presentScene работал хорошо, хотя следующий код не работал.

Как я могу это решить?

if let view = self.view {

    if let scene = SKScene(fileNamed: "GameScene") {
        scene.scaleMode = .aspectFill
        view.ignoresSiblingOrder = true
        view.showsFPS = true
        view.showsNodeCount = true

        let transition = SKTransition.fade(withDuration: 1.0)
        view.presentScene(scene, transition: transition)
                        view.presentScene(scene, transition: SKTransition.crossFade(withDuration: 1.0)) //didn't work

        //view.presentScene(scene) // work

    }

    view.ignoresSiblingOrder = true
    view.showsFPS = true
    view.showsNodeCount = true
}

ОБНОВЛЕНИЕ
Если я использую переход, произошла ошибка Fatal error: Unexpectedly found nil while unwrapping an Optional value.

    override func didMove(to view: SKView) {

        self.backgroundColor = UIColor.blue

        ball = self.childNode(withName: "Ball") as? SKSpriteNode
        paddle = self.childNode(withName: "Paddle") as? SKSpriteNode
        scoreLabel = self.childNode(withName: "Score") as? SKLabelNode

        let urlPath = Bundle.main.url(forResource: "success", withExtension: "mp3")
        do {
            audioPlayer = try AVAudioPlayer(contentsOf: urlPath!)
            audioPlayer.prepareToPlay()
        } catch {
            print("Error!")
        }

        ball.physicsBody?.applyImpulse(CGVector(dx: 50, dy: 50)) // error because ball is nil

        let border = SKPhysicsBody(edgeLoopFrom: (view.scene?.frame)!)
        border.friction = 1
        self.physicsBody = border

        self.physicsWorld.contactDelegate = self

    }
...