In meinem Spiel, wenn das Spiel beginnt, sind einige Knoten bereits in Kontakt, aber ich finde nicht, wie diese Kontakte zu erkennen sind. Es gelingt mir nur, Kontakte zu erkennen, die passieren, wenn sich Knoten während des Spiels bewegen und über die Funktion didBeginContact miteinander in Kontakt treten.SpriteKit/Swift - Wie man den Kontakt von zwei Knoten überprüft, wenn sie bereits in Kontakt sind
Hat jemand eine Idee, wie Sie diese Kontakte erkennen können?
Hier ist meine didBeginContact bei Bedarf:
func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if contact.bodyA.categoryBitMask == contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
contactsList.append([firstBody.node!,secondBody.node!])
}
}
gute Frage, ich denke, Sprite-Knoten, die ein Spiel anfassen berühren funktioniert nicht mit didBeginContact. Ich denke, deine einzige andere Option ist didEndContact, aber das scheint nicht das zu sein, was du willst. – Steve
Haben Sie getestet, ob didBeginContact für 2 Körper aufgerufen wird, die sich bereits berühren? Logischerweise würde ich denken, dass beim ersten Durchlauf der Szene, wenn die Physik-Engine zwei physikalische Körper überlappt, didBeginContact aufgerufen wird. Es wird dann diese Körper zu einer Liste hinzufügen und didBeginContact nicht beim nächsten Durchlauf anrufen, wenn sie sich noch berühren, aber didEndContact aufrufen, wenn sie nicht mehr berühren und sie aus der Liste entfernen. –
Vielen Dank für Ihre Antworten, leider wurde didBeginContact nicht aufgerufen. Ich habe genau so wie du gesagt! – Oscar