无法从函数中访问SKSpriteNode

时间:2016-02-07 15:33:01

标签: swift sprite-kit

我在碰撞检测中访问我添加到场景中的对象时遇到了问题: 在我的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)

有人能指出我的错误吗?我只是想不出来

1 个答案:

答案 0 :(得分:2)

您的错误是json_decode()功能的第一行。您正在使用spawnPassenger创建一个具有该功能范围的新常量。我认为您不打算重新声明乘客变量,而是打算将其设置为您之前创建的类变量。移除let,然后说:

let

这样,您只能引用一个乘客变量,而不是制作一个具有本地范围的新变量。