arc4随机函数随机执行双倍或三倍执行



我的代码中有一个函数,每 30-90 秒随机生成 1 次方。然而,由于某种原因,函数 double 或 tripple 每 3-4 次执行一次。感谢 Ron Myschuk 对它的帮助,直到现在,但它目前还没有完全运行,我希望有人可以阐明它在函数中我犯了错误的地方。

这些函数基本上会选择一个随机间隔等待 30-90 秒,然后触发其中一个电源功能。然后它调用自己并在 30-90 秒之间重新选择一个新的间隔,并选择一个新的随机电源来触发并重复,重复和重复......

func spawnRandomPowerup() {
    let waitForNextPowerUp = TimeInterval(CGFloat(arc4random() % 5) + 10)
    print("- Next PowerUp spawns in (waitForNextPowerUp) seconds")
    self.run(.wait(forDuration: waitForNextPowerUp)) {
        let powerup = Int(arc4random_uniform(UInt32(3)))
        print("PowerUp: (powerup)")
        var spawnPowerUp: SKAction!
        if powerup == 0 {
            spawnPowerUp = SKAction.run(self.spawnALifePowerUp)
            self.run(spawnPowerUp, withKey: "spawningLifePowerUps")
        }
        else if powerup == 1 {
            spawnPowerUp = SKAction.run(self.spawnAShieldPowerUp)
            self.run(spawnPowerUp, withKey: "spawningShieldPowerUps")
        }
        else if powerup == 2 {
            spawnPowerUp = SKAction.run(self.spawnARapidFirePowerUp)
            self.run(spawnPowerUp, withKey: "spawningRapidFirePowerUps")
        }
        self.spawnRandomPowerup()
    }
}

我厌倦了一些事情,比如用self.removeAllActions((启动函数,但这只会让事情变得更糟。提前感谢您查看此内容。

我在startNewLevel函数中发布了spawnRandomPowerup((调用,而不是

startGame函数,这导致每次达到100分时都会触发spawnRandomPowerup((调用。

再次感谢罗恩帮我找到这个。从这个家伙身上学到了很多东西!

最新更新