添加多个边框以在屏幕上和屏幕外检测节点

时间:2015-04-30 08:48:43

标签: swift ios8 sprite-kit collision-detection skphysicsbody

我正在使用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

这一切都按预期工作。我现在要做的是在屏幕中间添加另一个路径/边框/框,并检测图标何时与此联系。这是我可以告诉他们至少是屏幕/场景本身大小的某个部分。

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

1 个答案:

答案 0 :(得分:0)

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

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

它会完成你想要的所有事情。 你为什么不想使用节点?