我目前正在製作一款遊戲,其中您是中間的一艘太空船,並且有敵方船隻向您移動,您必須向他們開槍才能獲勝。節點聯繫時收到錯誤
當我測試遊戲時,我看到當兩艘或兩艘以上的敵方戰艦同時擊中玩家船時,我收到了一個錯誤。我不確定是否這是導致錯誤的原因,但是當我測試它時,它看起來像是這樣。
我製作了遊戲,以便每當敵方玩家觸摸玩家時,遊戲就結束並且調用一個函數來改變遊戲場景。這是錯誤被調用的地方,只要場景即將改變。
「致命錯誤:意外發現零而展開的可選值」
這裏是爲didBegin代碼(聯繫人:SKPhysicsContact)
func didBegin(_ contact: SKPhysicsContact) {
var BodyOne = SKPhysicsBody()
var BodyTwo = SKPhysicsBody()
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask{
BodyOne = contact.bodyA
BodyTwo = contact.bodyB
}
else{
BodyOne = contact.bodyB
BodyTwo = contact.bodyA
}
//SHIPS TOUCH EACH OTHER CHECK
if BodyOne.categoryBitMask == NumberingPhysics.SpaceShip && BodyTwo.categoryBitMask == NumberingPhysics.LeftV{
GameOver1()
BodyTwo.node?.removeFromParent()
BodyOne.node?.removeFromParent()
}
if BodyOne.categoryBitMask == NumberingPhysics.SpaceShip && BodyTwo.categoryBitMask == NumberingPhysics.RightV{
GameOver1()
BodyOne.node?.removeFromParent()
BodyTwo.node?.removeFromParent()
//more code is under here
}
,這裏是遊戲改變場景的代碼。 (當1個敵接觸的球員,但似乎並沒有在2個或更多品牌與球員接觸其作品)
func GameOver1(){
ButtonAudioPlayer.stop()
removeAllChildren()
removeAllActions()
let scene = GameOver(size: self.size)
let sKView = self.view! as SKView // <----- error shows here
sKView.ignoresSiblingOrder = true
scene.scaleMode = .aspectFill
sKView.presentScene(scene)
}
有人可以幫我解決這個問題。
我們不知道你在哪裏打電話GameOver1。如果你在場景中調用它,它可能會崩潰。 –
多個聯繫人可能發生在兩個不同對象之間的一幀中,你太早殺死你的精靈 – Knight0fDragon
[SpriteKit遊戲在檢測到兩個SKPhysicsContacts時崩潰]的可能重複(https://stackoverflow.com/questions/43058602/spritekit-game - 當兩個skphysicscontacts被檢測到時崩潰) – Knight0fDragon