Ich mache gerade ein Spiel, in dem du ein Raumschiff in der Mitte bist und feindliche Schiffe sich dir nähern und du musst auf sie schießen, um zu gewinnen.Einen Fehler empfangen, wenn Knoten Kontakt herstellen
Während ich das Spiel testete, sah ich, dass ich einen Fehler erhalte, wenn (wie es scheint) zwei oder mehr feindliche Schiffe das Spielerschiff gleichzeitig treffen. Ich bin mir nicht sicher, ob das den Fehler verursacht, aber es sieht so aus, wenn ich es teste.
Ich habe das Spiel so gemacht, dass, wenn feindliche Spieler den Spieler berühren, das Spiel endet und eine Funktion aufgerufen wird, um die Spielszene zu ändern. Hier wird der Fehler immer dann aufgerufen, wenn sich die Szene ändert.
„fatalen Fehler: unerwartet gefunden, gleich Null, während ein optionaler Wert auspackt“
hier ist der Code für die didBegin (Kontakt: 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
}
Und hier ist der Code des Spiels zu ändern Szene . (Das funktioniert, wenn ein Feind die Spieler berührt, aber scheint nicht zu, wenn zwei oder mehr Marken mit dem Spieler in Verbindung)
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)
}
Kann jemand bitte helfen Sie mir, dieses Problem zu beheben.
Wir wissen nicht, wo Sie GameOver1 anrufen. Wenn Sie es innerhalb einer Szene aufrufen, kann es abstürzen. –
Mehrere Kontakte können in einem Frame zwischen zwei verschiedenen Objekten auftreten, Sie werden Ihr Sprite zu früh töten – Knight0fDragon
Mögliche Duplikate von [SpriteKit Spiel stürzt ab, wenn zwei SKPhysicsContacts erkannt werden] (https://stackoverflow.com/questions/43058602/spritekit-game -crashes-when-two-skphysic Contacts-werden erkannt – Knight0fDragon