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

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

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

最佳答案

从性能的角度来看,这不会是最好的方法,但是如果您在场景中覆盖 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()
        }
    }
}

注意事项

请记住,您在 update 方法中编写的每个代码都会在每帧 执行 (在 60fps 游戏中每秒执行 60 次),因此您应该对此非常小心。
除非绝对必要,否则您不想在 update 中写入的典型内容:
  • 创建 对象
  • 循环
  • 递归 调用
  • 任何需要太多 时间 才能执行的疯狂代码

  • 希望这可以帮助。

    关于ios - 如何在 Sprite Kit 中的场景之外移除节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32320099/

    10-14 22:15