2017-01-31 6 views
1

Ich erstelle mein erstes Spiel in SpriteKit. Ich versuche, meine GameScene anzuhalten und dann einige Animationen über SpriteKit auszuführen. Das Problem war, dass wenn ich die Szene unter Verwendung self.view?.isPaused = true pausiere alles stoppt. Nach der Suche habe ich herausgefunden, dass der Weg dahin besteht, der Szene einen weiteren Knoten hinzuzufügen und alles andere, was du pausieren willst, untergeordnete Knoten dieses Knotens zu machen. Ich versuche das zu tun, bin aber nicht erfolgreich gewesen. Dies ist der Code, dass ichSpritekit: Pausieren des übergeordneten Knotens unterbricht den untergeordneten Knoten nicht

var worldNode:SKNode? 
override func didMove(to view: SKView) { 
    worldNode = SKNode() 
    self.addChild(self.worldNode!) 

    let spriteNode:SKSpriteNode = SKSpriteNode(imageNamed: "red_ball") 
    spriteNode.size = CGSize(width: 40, height: 40) 
    spriteNode.physicsBody = SKPhysicsBody(circleOfRadius: 15) 
    spriteNode.physicsBody?.isDynamic = true 

    self.worldNode?.addChild(spriteNode) 
    spriteNode.physicsBody?.applyImpulse(CGVector(dx: 10, dy: 10)) 


    self.worldNode?.isPaused = true 
    //self.view?.isPaused = true 
} 

haben, wenn ich das laufen sehe ich den Ball auf dem Bildschirm bewegt, die nicht nach meinem Verständnis geschehen sollte, da ich die worldNode bin pausieren und die spriteNode ist untergeordneten Knoten davon. Wenn ich die Szene mit self.view?.isPaused = true pausiere, ist der Ball wie erwartet stationär. Fehle ich etwas? Wie kann ich Knoten zur hinzufügen und dann nur diese Knoten anhalten, indem Sie worldNode pausieren. Vielen Dank !

+0

nach diesem Posting erkennen ich, dass sogar Pausieren des Kind-Knoten direkt mit spriteNode.isPaused = true , pausiert es nicht, vielleicht können die Knoten mit den angewandten Impluses auf diese Weise nicht pausiert werden? Sieht so aus, als müsste ich eine Alternative finden, vielleicht stattdessen die UI-Animation, die auch dann weiterarbeitet, wenn die Szene pausiert ist. – comatose

Antwort

0

Nun ja, eine Art Knoten, die durch Impulse und Kräfte bewegt zu pausieren ist sicherlich die Szene zu pausieren:

self.isPaused = true 

aber ich würde sagen, dass Sie andere Knoten wieder aktiviert haben wollen, so kannst du (zB HUD-Elemente.) Ihre Spielelemente in den Weltknoten.

So eine Möglichkeit, Physik zu pausieren zusammen mit den Knoten Pause ist die komplette Welt der Physik zu pausieren, wie folgt aus:

self.physicsWorld.speed = 0 
+0

beachte, dass isPaused abgehört wird, aus irgendeinem Grund kippt es auch alle isPaused-Zustände, was ist Schlecht. (Nehmen wir an, Sie haben einen angehaltenen Teilchenstrahler in der Szene, wenn Sie die Szene aufpausieren lassen, wird der Strahler vorzeitig ausgelöst) – Knight0fDragon

+0

@ Knight0fDragon Vergessen Sie diese kleine Tatsache und ich erinnere mich, dass Erwähnungen darüber waren, danke. Persönlich verwende ich es überhaupt nicht, um die Szene anzuhalten, weil ich gerne Weltknoten habe und stattdessen pausiere. – Whirlwind

+0

sogar Weltknoten ist davon betroffen – Knight0fDragon

Verwandte Themen