【问题标题】:Periodically add nodes to the scene with a random time interval in between以随机时间间隔定期将节点添加到场景中
【发布时间】:2017-03-03 06:52:44
【问题描述】:

简而言之,我想弄清楚如何在一段时间内向我的场景添加 10 个节点,每个节点由一些随机时间间隔分隔。

例如:

Loop 10 times:

A. Create and add node to scene

B. Wait some random amount of time, 1-5 seconds

C. Back to A

很高兴知道它何时完成运行,当最后一个节点添加到场景中时有一个布尔值只是翻转,但这需要知道最后一个节点何时完成添加。我不太确定如何做到这一点。我读了一些关于dispatch_after 的文章,但这并不能解决我添加节点之间的随机时间问题。

【问题讨论】:

    标签: ios swift sprite-kit sknode


    【解决方案1】:

    在 SpriteKit 中,您通常使用 SKAction 及其 waitForDuration(withRange:) 方法来执行此操作。重要的部分是withRange 参数(来自文档的引用):

    每次执行动作时,动作都会计算一个新的随机数 持续时间的值。持续时间可能会在任一方向上变化 最多为 durationRange 参数值的一半。

    例如,如果您的等待持续时间为 3 秒,并且范围参数设置为 2,您将获得 2 到 4 秒之间的延迟。

    所以你可以这样做:

    class GameScene: SKScene, SKPhysicsContactDelegate {
    
        var lastSpawnTime:Date?
    
        override func didMove(to view: SKView) {
    
            let wait = SKAction.wait(forDuration: 3, withRange: 4)
    
            let block = SKAction.run {[unowned self] in
                //Debug
                let now = Date()
    
                if let lastSpawnTime = self.lastSpawnTime {
    
                    let elapsed = now.timeIntervalSince(lastSpawnTime)
    
                    print("Sprite spawned after : \(elapsed)")
                }
                self.lastSpawnTime = now
                //End Debug
    
                let sprite = SKSpriteNode(color: .purple, size: CGSize(width: 50, height: 50))
                self.addChild(sprite)
            }
    
            let sequence = SKAction.sequence([block, wait])
            let loop = SKAction.repeat(sequence, count: 10)
    
            run(loop, withKey: "aKey")
        }
    }
    

    您会在控制台中看到如下内容:

    Spawning after : 1.0426310300827
    Spawning after : 1.51278495788574
    Spawning after : 3.98082602024078
    Spawning after : 2.83276098966599
    Spawning after : 3.16581499576569
    Spawning after : 1.84182900190353
    Spawning after : 1.21904700994492
    Spawning after : 3.69742399454117
    Spawning after : 3.72463399171829
    

    【讨论】:

    • 我很欣赏你的逻辑。它对我帮助很大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多