SpriteKit:我需要像.pauseActionForKey()这样的东西吗?

时间:2015-06-18 10:22:46

标签: swift sprite-kit skaction

我对如何解决以下问题感到有些困惑:

我的滚动游戏产生了从plist加载的各种障碍。产卵被SKAction延迟,每个障碍的持续时间由y位置计算。

更新以反映Wraithseeker的回答。

这是所有计时器在中启动的设置代码 didMoveToView()

for obstacleTuple in level.obstacleTuples {
  let positionY = obstacleTuple.positionY
  let obstacle = obstacleTuple.obstacle as! SKNode

  let duration = NSTimeInterval(positionY / kObstacleDistancePerSec)

  // **Update**: Instead of running the wait action on the scene...
  //runAction(SKAction.waitForDuration(duration), completion: {
  // I should run it on the foregroundNode...
  foregroundNode.runAction(SKAction.waitForDuration(duration), completion: {
    self.foregroundNode.addChild(obstacle)
  })
}


// And then toggle the pause property on that node to stop and resume.
let foregroundNode.paused = foregroundNode.paused == true ? false : true

我希望有特殊事件(根据用户动作而发生),在此期间,上述障碍的产生会进一步延迟并且玩家可以收集奖励对象。 所以基本上,我需要为等待SKAction分配一个密钥,然后使用.pauseActionForKey()方法(而不是.removeActionForKey())。

是否有可能延长SKAction? 有没有更好的方法来实现我想要做的事情?

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是创建一个空SKNode并将这些操作分配给您要暂停的节点。这样,当您暂停操作时,它不会暂停您的整个游戏,因为您现在使用SKActionsself分配给场景。

要暂停操作,只需按照sangony的建议在空SKNode上暂停。

一个例子

myEmptyNode.pause() //