添加多个边框以检测屏幕内外的节点

Adding multiple borders to detect nodes on and off screen

我正在使用 Sprite Kit 将一些圆形图标添加到场景中。我已经添加了一些代码来在场景大小的外部创建一个边框,这用于检测接触并从父节点中删除节点。

    // Outside border collision detection
    var largeBorder = CGRectMake(0, 0, size.width, size.height)
    largeBorder.origin.x -= (mainIconRef.size.width + mainIconRef.size.width/3)
    largeBorder.origin.y -= (mainIconRef.size.height + mainIconRef.size.height/3)
    largeBorder.size.width += ((mainIconRef.size.width + mainIconRef.size.width/3) * 2)
    largeBorder.size.height += ((mainIconRef.size.height + mainIconRef.size.height/3) * 2)

    let pathMainView = CGPathCreateWithRect(largeBorder, nil)
    self.physicsBody = SKPhysicsBody (edgeLoopFromPath: pathMainView)
    self.physicsBody?.dynamic = false
    self.physicsBody?.categoryBitMask = ColliderCategory.Wall.rawValue
    self.physicsBody?.contactTestBitMask = ColliderCategory.Tap1.rawValue | ColliderCategory.Tap2.rawValue | ColliderCategory.Tap3.rawValue | ColliderCategory.TapFire.rawValue
    self.physicsBody?.usesPreciseCollisionDetection = true

这一切都按预期工作。我现在想做的是在屏幕中间添加另一个 path/border/box 并检测图标何时接触它。这样我就可以知道它们至少是 screen/scene 本身大小的一部分。

我不确定的是我们设置了上面的self.physicsBody。我不想覆盖它,我只想添加一个额外的不可见(未显示)的边框,我可以跟踪接触(不是碰撞)。这是否可以不添加为节点?

为什么不使用不可见节点?只需关闭节点的物理并为物理体选择正确的形状。

设置正确的collisionbitmask、categorybitmask、contactbitmask等,图标将通过节点并注册"contact"。

它会做你想做的一切。 你为什么不想使用节点?