我在碰撞检测中访问我添加到场景中的对象时遇到了问题:
在我的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)
您的错误是json_decode()
功能的第一行。您正在使用spawnPassenger
创建一个具有该功能范围的新常量。我认为您不打算重新声明乘客变量,而是打算将其设置为您之前创建的类变量。移除let
,然后说:
let
这样,您只能引用一个乘客变量,而不是制作一个具有本地范围的新变量。