Swift:在一定范围内随机生成敌人?

Posted

技术标签:

【中文标题】Swift:在一定范围内随机生成敌人?【英文标题】:Swift: spawn enemies at random times within a range? 【发布时间】:2015-07-09 04:35:49 【问题描述】:

好吧,我知道这个问题已经回答了那些用其他几种语言提出问题的人,但似乎还没有人要求使用 Swift。

我正在创建一个精灵套件游戏,我需要随机生成我的敌人(在 0-2 秒范围内)。现在我让他们使用延迟每秒生成一次。这是敌人生成函数:

func spawnEnemy1() 
        var enemy1Texture = SKTexture(imageNamed: "enemy1")

        enemy1 = SKSpriteNode(texture: enemy1Texture)
        enemy1.setScale(0.3)
        enemy1.name = "enemy1"

        enemy1.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 1.2)
        enemy1.zPosition = 55

        var enemyPhysicsSize = CGSize(width: enemy1.size.width,height: 65)
        enemy1.physicsBody = SKPhysicsBody(rectangleOfSize: enemyPhysicsSize)
        enemy1.physicsBody?.dynamic = false

        enemy1.physicsBody?.categoryBitMask = ColliderType.Enemy1.rawValue
        enemy1.physicsBody?.contactTestBitMask = ColliderType.Savior.rawValue
        enemy1.physicsBody?.collisionBitMask = ColliderType.Savior.rawValue

        self.addChild(enemy1)

        let enemyMoveDown = SKAction.moveTo(CGPointMake(self.size.width * 0.5,-100), duration:5.6)

        let scaleEnemy = SKAction.scaleTo(0.5, duration: 5.6)

        let enemyScaleDown = SKAction.group([enemyMoveDown, scaleEnemy])

        enemy1.runAction(enemyScaleDown)
    

这里正在执行生成函数:

let enemy1SpawnDelay = SKAction.waitForDuration(1)

        runAction(SKAction.repeatActionForever(
            SKAction.sequence([
                enemy1SpawnDelay,
                SKAction.runBlock(self.spawnEnemy1()),
                SKAction.waitForDuration(5.6)])))

(我不希望屏幕上同时出现多个敌人,敌人从屏幕上向下移动需要 5.6 秒,因此是最后的延迟)。

enemy1SpawnDelay 控制从最后一个敌人出现到下一个敌人出现之间的时间间隔,所以我需要知道如何将enemy1SpawnDelay 设置为等于 0 之间的新随机数-2 每次生成一个敌人。

我该怎么做?或者有没有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

利用 arc4random 返回一个介于 0 到您的数字之间的随机值

spawndelay = arc4random_uniform(UInt32(yournumber))

对于来自here的双倍

func random(#lower: Double, upper: Double) -> Double 
    let r = Double(arc4random(UInt64)) / Double(UInt64.max)
    return (r * (upper - lower)) + lower

【讨论】:

我需要双精度,而不是整数。你能看看我最近的问题吗?

以上是关于Swift:在一定范围内随机生成敌人?的主要内容,如果未能解决你的问题,请参考以下文章

如何在excel中生成一个在一定范围内的随机数

Java如何生成一定范围内的随机数? [复制]

excel如何生成一定范围内不重复的随机整数?

在VB中,如何生成某个范围内的随机整数?

GO GOLANG 生成范围随机数

Unity3d在屏幕范围内随机生成一个圆