所以我试图在我的游戏中产生一个下降的物体,我正在使用一个数组来设置所有可能的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)
}
答案 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)