2016-06-23 7 views
-1

Was ist der beste Weg, um Kollision mit SpriteKit didBeginContact Methode zu überprüfen. Ich bin derzeit nach Klasse überprüft und so etwas wie dies zu tun:Der effizienteste Weg Kollisionen zu überprüfen in didBeginContact

if let thisMine = nodeA as? Mine { 
    if nodeB is Player { 
     thisMine.explode() 
    } 
} 
else if let thisMine = nodeB as? Mine { 
    if nodeA is Player { 
     thisMine.explode() 
    } 
} 

ich das ein paar Mal in der didBeginContact Methode mache, weil ich viele verschiedene Objekte, die miteinander interagieren können. Ist es effizienter, nach den Bitmasken zu suchen? Gibt es auch eine Möglichkeit, den Code im Grunde zu duplizieren, indem du nodeA und nodeB als dieselbe Klasse vergleichst?

+0

SO runzelt die Stirn auf fragen 2 Fragen in einem Beitrag. Sie sollten diese Frage lieber als neue Frage stellen - schreiben Sie Ihren Code mit beiden Methoden und fragen Sie nach der "bevorzugten Technik". –

Antwort

2

Nutzungskategorie Bitmasken:

func didBeginContact(contact: SKPhysicsContact) { 
     let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask 

     switch contactMask { 

     case categoryBitMask.player | categoryBitMask.thisMine: 
      print("Collision between player and thisMine") 
      let mineNode = contact.bodyA.categoryBitMask == categoryBitMask.thisMine ? contact.bodyA.node! : contact.bodyB.node! 
      mineNode.explode() 

     default : 
      //Some other contact has occurred 
      print("Some other contact") 
    } 
} 
Verwandte Themen