Как я могу отключить событие касания узла SpriteKit, а затем включить его через 25 секунд для касания и перехода к следующей сцене? - PullRequest
0 голосов
/ 19 мая 2019

Как я могу отключить событие касания узла SpriteKit, а затем включить его через 25 секунд, чтобы при касании узла он перенес пользователя на следующую сцену?

Я настраиваю GameScene, который воспроизводит аудиофайл в течение 25 секунд, а затем я хочу, чтобы пользователь мог щелкнуть по узлу SpriteKit, который перенесет пользователя на следующую сцену. Проблема в том, что узел не может быть скрыт. Он должен быть видимым, но отключен, а затем видим и включен для прикосновения через 25 секунд.

    if nextButton.contains(location) {
        if nextButton.isHidden == true {
            nextButton.isUserInteractionEnabled = false
        } else {
            goToScene(scene: getNextScene()!)
        }

Я использовал этот код для случаев, когда узел SPriteKit был в состоянии быть скрытым, но на этот раз узел должен быть виден все время.

1 Ответ

0 голосов
/ 20 мая 2019

Судя по всему, ваша GameScene обрабатывает сенсорные события, поэтому, когда вы проигрываете аудио, вы должны сделать что-то вроде этого:

self.userInteractionEnabled = false
let audio = SKAudioNode()
audio.run{
    SKAction.group([SKAction.play, 
        SKAction.sequence([
            SKAction.wait(forDuration:25),
            SKAction.run({self.userInteractionEnabled = true})
        ])
    )
}
self.addChild(audio)

Если вы используете действие playSound

self.userInteractionEnabled = false
let audio = SKSpriteNode()
audio.run{ 
    SKAction.sequence([
        SKAction.playSoundFileNamed("mySound",true),
        SKAction.run({self.userInteractionEnabled = true})
    ])
}

По сути, это устанавливает задержку для включения касания после завершения звука.

...