ios - arc4random 函数随机执行两次或三次

标签 ios swift sprite-kit arc4random

我的代码中有一个函数,每 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/

相关文章:

ios - 两个 ViewController - 第一个有 x 个按钮,第二个有 x 个标签

ios - NSAttributedString 忽略 UILabel 的 Autoshrink 和 numberOfLines (iOS 6)

swift - Swift 中 performSelector 的必需替代项

ios - 如何将 UIActivityIndi​​catorView 放在导航栏按钮 (rightBarButtonItem/leftBarButtonItem) 的顶部

ios - UIButton 没有更新?

ios - swift + Parse.com : how to fetch user relation using a join table

ios - 图像加载为黑色

swift - 检查 SKAction 是否包含一个 Action (快速)

swift - 如何在保持重力的同时保持 spritekit 节点中的能量恒定

javascript - 防止此点击事件的 iOS 双击问题?