Моя инструкция if в спрайтеките (swift не работает).Я пытаюсь увеличить количество препятствий, когда счет становится выше - PullRequest
0 голосов
/ 04 января 2019

Я создаю игру в Spritekit, где игрок должен собирать монеты.Собирая их, они должны избегать бомб.По сути, я хочу увеличить количество бомб, которые появляются, когда счет становится выше ... поэтому я использовал оператор if, но он не работает.Количество появляющихся бомб имеет тенденцию оставаться неизменным:

 if self.score >= 0 && self.score < 20 {

        bombTimer = Timer.scheduledTimer(withTimeInterval: 4, repeats: true, block: { (timer) in
            self.createBomb()
        })

    } else if self.score >= 20 && self.score < 35 {

        bombTimer = Timer.scheduledTimer(withTimeInterval: 3, repeats: true, block: { (timer) in
            self.createBomb()
        })

    } else if self.score >= 35 && self.score < 50 {

        bombTimer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true, block: { (timer) in
            self.createBomb()
        })

    } else if self.score >= 50 && self.score < 150 {

        bombTimer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (timer) in
            self.createBomb()
        })

    }

1 Ответ

0 голосов
/ 04 января 2019

Если вы пишете код внутри класса SKScene, мне нравится использовать SKActions, а не NSTimers, так как действия будут приостановлены, когда сцена приостановлена.

Вставьте эту функцию в ваш класс сцены где-нибудь.Использование оператора switch лучше использовать при работе с набором условий

func getBombInterval() -> Double? {
    switch true {
    case score >= 0 && score < 20: return 4
    case score < 35: return 3
    case score < 50: return 2
    case score < 150: return 1
    default: return nil
    }
}

. Затем замените код, указанный выше:

guard let interval = getBombInterval() else { print("Score is less than 0") ; return }
    let waitAction = SKAction.wait(forDuration: interval)
    run(waitAction, completion: { self.createBomb() } )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...