2017-01-31 2 views
1

Я создаю свою первую игру в SpriteKit. Я пытаюсь приостановить свою GameScene, а затем запустить некоторые анимации через SpriteKit. Проблема в том, что если я приостанавливаю сцену, используя self.view?.isPaused = true, все останавливается. После поиска я обнаружил, что способ сделать это - добавить еще один узел в сцену и сделать все остальное, что вы хотите приостановить, дочерние узлы этого узла. Я пытаюсь это сделать, но не добился успеха. Это код, который я имеюSpritekit: Приостановка родительского узла не приостанавливает дочерний узел

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 
} 

, когда я запускаю это я вижу мяч движется на экране, которое не должно происходить в соответствии с моим пониманием, так как я приостановив worldNode и spriteNode является дочерним узлом этого. Если я использую self.view?.isPaused = true, чтобы приостановить сцену, тогда мяч будет неподвижен, как ожидалось. Я что-то упускаю ? как я могу добавить узлы в worldNode, а затем просто приостанавливать только эти узлы, приостанавливая worldNode. Благодаря !

+0

после размещения этого я понял, что даже приостановка дочернего узла непосредственно с spriteNode.isPaused = верно , не приостанавливает его, возможно, узлы с приложением имплантов не могут быть приостановлены таким образом? Похоже, мне нужно найти альтернативу, возможно, вместо этого использовать анимацию пользовательского интерфейса, которая будет продолжать работать, даже если сцена остановлена ​​ – comatose

ответ

0

Ну один способ приостановить узлы перемещаемых импульсов и сил, конечно, чтобы приостановить сцену:

self.isPaused = true 

, но я бы сказал, что вы хотите, чтобы другие узлы возобновленных так что вы добавили (например, элементы HUD). ваши игровые элементы в мировой узел.

Так один из способов, чтобы сделать паузу физики наряду с приостановкой узла, чтобы приостановить весь мир физики, как это:

self.physicsWorld.speed = 0 
+0

Заметьте, что isPaused прослушивается, по какой-то причине он переворачивает все дочерние объекты isPaused, а также Плохо. (Предположим, что на сцене у вас есть приостановленный излучатель частиц, если вы остановили сцену, эмиттер будет преждевременно срабатывать) – Knight0fDragon

+0

@ Knight0fDragon Забыл этот маленький факт, и я помню, что упоминал об этом, спасибо. Лично я не использую его вообще, чтобы приостановить сцену, потому что мне нравится иметь мировой узел и вместо этого приостанавливать его. – Whirlwind

+0

на него воздействует даже мировой узел – Knight0fDragon

 Смежные вопросы

  • Нет связанных вопросов^_^