2016-02-07 111 views
0

我面临的一个问题,一个函数中访问SKSpriteNode,访问对象我加入到我的场景我的碰撞检测中时:顶部 在我的GamScene.swift我宣布 var passenger: PassengerNode!无法从

我触发spawnPassenger方法,它看起来像这样

func spawnPassenger(x: CGFloat, y: CGFloat){ 
    let passenger = SKSpriteNode(imageNamed: "passenger") 
    passenger.position = CGPoint(x: platformArray[2].position.x, y: platformArray[2].position.y) 
    passenger.position.x = x 
    passenger.position.y = y 
    //passenger.physicsBody!.categoryBitMask = PhysicsCategory.Passenger 
    passenger.zPosition = 5 
    passenger.anchorPoint = CGPointZero 
    //print("passenger spawned") 
    self.addChild(passenger) 

} 

应用程序建立很好,但一旦碰撞被触发,该动作被触发:

func actionPassengerOnboarding(){ 
     let moveToTaxi = SKAction.moveTo(CGPoint(x: taxiNode.position.x, y: platformNode3.position.y), duration: 2); 
     let removePassenger = SKAction.removeFromParent() 
     let setPassengerToOnBoard = SKAction.runBlock({() -> Void in 
    self.passengerOnBoard = true 
    }) 
     let onBoardActionSequence = SKAction.sequence([moveToTaxi, removePassenger, setPassengerToOnBoard]) 
     self.passenger.runAction(onBoardActionSequence, withKey: "isOnboarding") 
} 

被触发我得到一个崩溃和致命错误打印出来fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

任何人都可以点我到我的错误?我只是不知道它

+0

调试器可以将您指向导致该错误的确切行。它不会显示你吗? –

回答

2

您的错误是您的spawnPassenger函数的第一行。您正在创建一个新的常量,其范围为let。我认为你不打算重新宣布一个乘客变量,而是打算将它设置为你之前创建的类变量。取出let,只是说:

passenger = SKSpriteNode(imageNamed: "passenger") 

这样,你只引用一个乘客变量,而不是做一个新的对本地范围。