2016-02-12 52 views
0

所以我想在我的遊戲中產生一個下降的對象,我使用一個數組來設置所有可能的xSpawn點,然後我通過數組隨機產生一個x值,但問題是當它到達此行的代碼:EXC_BAD_INSTRUCTION當產卵一個對象

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

三分之二的xSpawnOptions五個成員是負數,這是不能在一個無符號的整數來表示。因此,當您嘗試將它們轉換爲:

let SpawnPoint = UInt32(randomX) 

它會像您期望的那樣崩潰。

目前尚不清楚你在隨機數字生成中想要做什麼,但無論如何,你需要改變它的邏輯來解決這個問題,也許通過計算總是正數的隨機數字,然後加上或減去偏移量,例如:

let SpawnPoint: UInt32 = 50  

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