如何在Sprite Kit中的场景外删除节点

时间:2015-08-31 21:16:32

标签: ios swift sprite-kit skscene sknode

我试图在离开场景时删除节点,我尝试了这种方法来做到这一点

if( CGRectIntersectsRect(node.frame, view.frame) ) {
   // Don't delete your node
} else {
   // Delete your node as it is not in your view
}

但似乎没有任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

从性能的角度来看,这不是最好的方法,但是如果你覆盖场景中的update方法,你就可以编写每帧执行的代码。

class GameScene : SKScene {

    var arrow : SKSpriteNode?

    override func update(currentTime: NSTimeInterval) {
        super.update(currentTime)

        if let
            arrow = arrow,
            view = self.view
        where
            CGRectContainsRect(view.frame, arrow.frame) == false &&
            CGRectIntersectsRect(arrow.frame, view.frame) == false {
                arrow.removeFromParent()
        }
    }
}

考虑

请记住,您在更新方法中编写的每个代码都执行每帧(60fps游戏每秒60次),因此您应该非常小心。 除非绝对必要,否则您不想在update内编写的典型内容:

  1. 创建对象
  2. 循环
  3. 递归来电
  4. 任何需要执行时间
  5. 的疯狂代码

    希望这有帮助。