我正在使用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
。我不想覆盖它,我只想添加一个不可见的边框(未显示),我可以跟踪接触(不是碰撞)。如果不添加节点,这可能吗?
答案 0 :(得分:0)
为什么不使用不可见的节点?只需关闭节点的物理,并为物理体选择正确的形状。
设置正确的collisionbitmask,categorybitmask,contactbitmask等,图标将通过节点并注册“contact”。
它会完成你想要的所有事情。 你为什么不想使用节点?