Почему я получаю сообщение об ошибкеПочему я получаю EXC_BAD_INSTRUCTION ошибки (код = EXC_I386_INVOP, субкодовое = 0x0)
EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP, субкодовое = 0x0)
в
let SpawnPoint = UInt32(MaxValue - MinValue)
в следующем коде:
func SpawnRain() {
Rain = SKSpriteNode(imageNamed: "Rain")
let MinValue = self.size.width/8
let MaxValue = self.size.width - 40
let SpawnPoint = UInt32(MaxValue - MinValue)
Rain.size = CGSize(width: 32, height: 32)
Rain.position = CGPoint(x: CGFloat(arc4random_uniform(SpawnPoint)), y: self.size.height)
Rain.physicsBody = SKPhysicsBody(rectangleOfSize: Rain.size)
Rain.physicsBody?.categoryBitMask = PhysicsCatagory.Rain
Rain.physicsBody?.contactTestBitMask = PhysicsCatagory.Player
Rain.physicsBody?.affectedByGravity = false
Rain.physicsBody?.dynamic = true
let action = SKAction.moveToY(-70, duration: 8.0)
let actionDone = SKAction.removeFromParent()
Rain.runAction(SKAction.sequence([action, actionDone]))
self.addChild(Rain)
}
Прежде всего, пожалуйста, следуйте правилам форматирования кода, по крайней мере, при обмене кодом. Переменные начинаются с нижнего регистра по соглашению, также как и имена функций. Во-вторых, вы уверены, что плавание, которое вы вычисляете, никогда не отрицательно? Если self.size равен «0.0f», как и перед исходным макетом, это отправляет отрицательное число конструктору целых чисел без знака. – SmokeDispenser
UInt32 является неподписанным, так что вы можете сделать это let maxValue = self.size.width> 0? self.size.width - 40: 0 –
Предположительно, 'MaxValue - MinValue' не находится в диапазоне для' UInt32', и поэтому вы получаете ошибку. –