我的代码中有一个函数,每 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()调用。
再次感谢 Ron 帮助我找到这个。从这个人身上学到很多东西!
关于ios - arc4random 函数随机执行两次或三次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925914/