产生对象时的EXC_BAD_INSTRUCTION

时间:2016-02-12 01:29:45

标签: swift sprite-kit

所以我试图在我的游戏中产生一个下降的物体,我正在使用一个数组来设置所有可能的xSpawn点然后我随机通过数组来获得一个x值,但问题是当它到达时代码中的这一行:

let SpawnPoint = UInt32(randomX)

它给了我EXC_BAD_INSTRUCTION错误,我似乎无法理解为什么。我现在还是新手,所以解释为什么它在这一点上给我一个错误会非常珍惜。

完整代码:

func spawnFallingOjects() {

    let xSpawnOptions = [-50, -100, 0, 100, 150]

    let randomX = xSpawnOptions[Int(arc4random_uniform(UInt32(xSpawnOptions.count)))]


    let Bomb = SKSpriteNode(imageNamed: "YellowFrog")
    Bomb.zPosition = 900


    let SpawnPoint = UInt32(randomX)      

    Bomb.position = CGPoint(x: CGFloat(arc4random_uniform(SpawnPoint)), y: self.size.height)

    let action = SKAction.moveToY(-350, duration: 2.0)
    Bomb.runAction(SKAction.repeatActionForever(action))

    self.addChild(Bomb)

}

1 个答案:

答案 0 :(得分:1)

xSpawnOptions的五个成员中有两个是负数,无法用无符号整数表示。因此,当您尝试将它们转换为:

let SpawnPoint = UInt32(randomX)

它会像你期待的那样崩溃。

您不清楚自己的随机数生成了什么,但是您需要改变逻辑来解决这个问题,或许可以通过计算一个随机数始终为正,然后向其添加或减去偏移量,例如:

let SpawnPoint: UInt32 = 50     

Bomb.position = CGPoint(x: CGFloat(Int(arc4random_uniform(SpawnPoint)) + randomX), y: self.size.height)