2014-06-15 13 views
5

Ich möchte meine Sprites Kollisionen und Kontakte erkannt werden, aber ich möchte nicht, dass sie sich dynamisch bewegen (ich muss nur wissen, dass sie berührt haben).SpriteKit Kollision erkennen, ohne dynamic auf true zu setzen?

didBeginContact(contact: SKPhysicsContact!) wird nur aufgerufen, wenn ich physicsBody.dynamic meines Players auf true eingestellt habe. Wie kann ich diese Delegiertenmethoden aufrufen, ohne die Position oder Bewegung meines Players zu beeinflussen?

Antwort

1

Die physicsBody s folgen der Physikwelt, die von meiner Szene eingerichtet wurde. Wenn sie kollidieren, interagieren sie mit der Physikwelt, die eine Standardgravitation hat, die sie nach unten zieht.

um dieses Problem zu beheben, in der init Methode meiner Szene I

self.physicsWorld.gravity = CGVectorMake(0, 0) 

Dynamische noch auf true gesetzt wird eingestellt hat, weil ich die Physik Körper zur Interaktion mit der Welt der Physik will, aber ich don‘ Ich möchte, dass die Physik sie beeinflusst, also ist das die Lösung.

3

Sie können Objekte auf dem Bildschirm anheften, sodass Sie die Schwerkraft nicht auf 0 setzen müssen (wenn Sie die Schwerkraft für andere Objekte beibehalten möchten). Legen Sie das Objekt nach oben wie folgt aus:

object.physicsBody.dynamic = true 
    object.physicsBody.affectedByGravity = false 
    object.physicsBody.pinned = true 

Mit diesem Setup Ihr ​​Objekt mit anderen Objekten ohne Bewegung kollidieren können.

Verwandte Themen