Sprite kit 脱离屏幕时,精灵套件从父级移除SKNode

Sprite kit 脱离屏幕时,精灵套件从父级移除SKNode,sprite-kit,removechild,skspritenode,sknode,Sprite Kit,Removechild,Skspritenode,Sknode,我想知道如何删除我的SKNodes时,他们离开屏幕,以帮助我的游戏运行更顺利 如何在雪碧套件上执行此操作 非常感谢 下面是一个链接,指向一个答案,该答案删除了屏幕顶部的节点。您只需复制它以覆盖整个边界,并将所有墙设置为具有相同的contactBitMask值 基本上,逻辑是当SKSpriteNodes与位于可见屏幕外的物理体接触时,将其移除。以下是Swift 4中的一个简单解决方案: class GameScene: SKScene { let s = SKLabelNode(fontN

我想知道如何删除我的SKNodes时,他们离开屏幕,以帮助我的游戏运行更顺利

如何在雪碧套件上执行此操作 非常感谢

下面是一个链接,指向一个答案,该答案删除了屏幕顶部的节点。您只需复制它以覆盖整个边界,并将所有墙设置为具有相同的contactBitMask值


基本上,逻辑是当SKSpriteNodes与位于可见屏幕外的物理体接触时,将其移除。

以下是Swift 4中的一个简单解决方案:

class GameScene: SKScene {
    let s = SKLabelNode(fontNamed: "Chalkduster")

    override func didMove(to view: SKView) {
      s.text = "test"
      s.fontSize = 50
      addChild(s)

      let moveRight = SKAction.moveBy(x: 40, y: 0, duration: 0.5)
      s.run(SKAction.repeatForever(moveRight))
    }

    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
        if ((s.parent != nil) && !intersects(s)) {
            s.removeFromParent()
            print("Sprite removed.")
        }
    }
}
您有一个水平移动的精灵(在本例中为
SKLabelNode
,但任何精灵节点都可以),一旦超出帧边界,您就要删除该精灵


您可以使用
intersects
函数检查此项,然后从其父项中删除该精灵。在移除精灵之前,我还检查了它是否有父对象(通过检查
s.parent
是否为零),因为我们只希望移除精灵一次。

展示您自己已经尝试过的方法。类似问题请参见此答案:没问题。很高兴能帮上忙。快乐编码!