Как получить функцию, которая возвращает SKAction, для повторного вызова? - PullRequest
0 голосов
/ 11 февраля 2019

Я пишу простую игру Bullet Hell в Swift 4 и создаю шаблоны для разных типов врагов.Когда я вызываю функцию run в didMove, я хотел бы запустить созданную мной функцию, чтобы решить, какой шаблон запустить.Я хочу, чтобы по одному шаблону запускался одновременно.

В настоящее время, когда вызывается функция запуска и начинается цикл, функция решить () вызывается один раз, возвращая одно действие SKAction, которое повторяется для всей совокупностиигра.

Я пробовал делать блоки, возиться с последовательностями и всякими вещами, но ни один из них не дал желаемого эффекта.

// Chooses what spawning patterns will be used
// Returns an SKAction
func decide() -> SKAction{
    // Randomizer for spawning patterns
    let n = arc4random_uniform(10)
    print(n)
    var chosenPattern = SKAction.run {}

    if n > -1 && n < 5 {
        chosenPattern = spawnPattern2
    }
    else{
        chosenPattern = spawnPattern1
    }

    print(chosenPattern)
    return chosenPattern
}

override func didMove(to view: SKView) {
    backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, 
    alpha: 1)
    initialize()

    update(0)

    defineSpawnPatterns()

    if isGameOver != true{
        run(SKAction.repeatForever(decide()))
    }
}

Я хочу, чтобы функция принятия решениянеоднократно вызываться каждый раз.Когда один набор кораблей закончен с его нерестом и прочим, я хочу, чтобы он выбрал, продолжать или начинать создавать новые корабли.

...