Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios arc4random函数随机双执行或三执行_Ios_Swift_Sprite Kit_Arc4random - Fatal编程技术网

Ios arc4random函数随机双执行或三执行

Ios arc4random函数随机双执行或三执行,ios,swift,sprite-kit,arc4random,Ios,Swift,Sprite Kit,Arc4random,我的代码中有一个函数,每30-90秒随机产生一次能量。但是由于某些原因,函数double或tripple每执行3-4次就执行一次。感谢Ron Myschuk对它的帮助,直到现在为止,但它目前运行不太正常,我希望有人能说明我在函数中出错的地方 这些函数基本上会选择一个随机间隔,等待30-90秒,然后启动一个电源函数。然后它调用自己并重新选择一个30-90秒之间的新间隔,选择一个新的随机电源来发射和重复,重复和重复 func spawnRandomPowerup() { let waitF

我的代码中有一个函数,每30-90秒随机产生一次能量。但是由于某些原因,函数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()调用,而不是startName函数,这导致每次达到100点时,spawnRandomPowerup()调用都会触发


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

例行的工作。我只是在一个空白的项目中重新测试了它,它像预期的那样一次触发1个。问题不在于这个函数。你把最初的通电呼叫放在哪里了?在上面放一个断点。我怀疑当你的场景加载导致不稳定的结果时,它不止一次被击中。我发现了这个问题,我有两个函数。一个名为startName(),另一个名为startNewLevel(),每次达到一定数量的点时运行,我在startNewLevel()函数中进行了调用。我很抱歉。