如何检查一个节点的位置是否包含在另一个节点中?

How to check if the location of a node is included in another one?

我正在尝试检查一个节点是否位于另一个节点中:例如,一个正在移动的大矩形中的气球。如果矩形中不再有气球,我希望气球消失。

我已经尝试使用 did begin contact 功能,但它不起作用。

感谢您的帮助

给定 2 SKSpriteNode(s)相同 parent

let spriteA = SKSpriteNode()
let spriteB = SKSpriteNode()

let parent = SKNode()
parent.addChild(spriteA)
parent.addChild(spriteB)

我们可以用这条线

检查spriteAposition点是否在spriteB的框架(边界框)内
CGRectContainsPoint(spriteB.frame, spriteA.position)

路口

或者我们也可以检查精灵文字边界框之间的交叉点

CGRectIntersectsRect(spriteA.frame, spriteB.frame)

当 spriteA 和 spriteB 不相同时 parent

现在让我们考虑一下这个场景

let spriteA = SKSpriteNode()
let spriteB = SKSpriteNode()

let scene = SKScene()
let parent = SKNode()
scene.addChild(spriteA)
scene.addChild(parent)
parent.addChild(spriteB)

要检查spriteA.position是否在spriteB.frame内,首先我们必须将spriteA.position转换为spriteB坐标系。

let spriteAPositionWithSpriteBCoordindates = spriteA.convertPoint(spriteA.position, toNode: spriteB)

现在我们可以调用CGRectContainsPoint函数

CGRectContainsPoint(spriteB.frame, spriteAPositionWithSpriteBCoordindates)