2016-02-12 4 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) 
Смежные вопросы