添加多个边框以检测屏幕内外的节点
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"。
它会做你想做的一切。
你为什么不想使用节点?
我正在使用 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"。
它会做你想做的一切。 你为什么不想使用节点?