2017-06-09 4 views
1

Ich erhalte einen Fehler, wenn ich eine Kollision habe. Meine ganze Kollision funktioniert gut außer einem, und der Fehler hier ist der Fehler. Ich verstehe nicht, was es vollständig bedeutet, und es ist ein Laufzeitfehler, kein Bauzeitfehler.Parent konnte nicht ausgewertet werden: Variable nicht verfügbar - Sprite-Kit

(SKNode) SpriteKit.SKNode = <parent failed to evaluate: variable not available>

Der Code:

func didBegin(_ contact: SKPhysicsContact) { 
    let body1 = contact.bodyA.node as! SKSpriteNode 
    let body2 = contact.bodyB.node as! SKSpriteNode 
} 

Was bedeutet der Fehler bedeuten, und wie kann ich es beheben?

+0

Sie Ihren Knoten getötet, aber das System nicht entfernt hat es noch – Knight0fDragon

+0

@KnightOfDragon Also im Grunde mein Knoten aus meinem Code gelöscht wurde, aber das System hat löschen Sie es noch nicht ? Wie kann ich diesen Fehler verhindern? – Rishi

+0

ist es am besten, den Knoten auf der DidEndUpdate-Methode zu töten, und haben eine Flag-Setup, so dass Sie Auswertungen überspringen können – Knight0fDragon

Antwort

1

Ich mache das

func didBegin(_ contact: SKPhysicsContact) { 

    let bodyA = contact.bodyA 
    let bodyB = contact.bodyB 

    guard let nodeA = bodyA.node as? SKSpriteNode, 
      let nodeB = bodyB.node as? SKSpriteNode 
    else {return} 

    guard let parentNodeA = nodeA.parent, 
      let parentNodeB = nodeB.parent 
    else {return} 

    //all your stuff 
} 
+0

Danke für die Antwort, ich mag Ihre Idee, aber ich denke, es könnte einfacher sein, didEnd Kontakt wie KnightOfDragon vorgeschlagen. – Rishi

Verwandte Themen