【问题标题】:How to check if the location of a node is included in another one?如何检查一个节点的位置是否包含在另一个节点中?
【发布时间】:2016-02-25 18:10:42
【问题描述】:

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

我尝试过使用 did begin 联系功能,但它不起作用。

感谢您的帮助

【问题讨论】:

    标签: ios swift location sknode


    【解决方案1】:

    给定 2 个SKSpriteNode(s) 与同一个父级

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

    我们可以用这条线检查spriteA的position点是否在spriteB的框架(边界框)内

    CGRectContainsPoint(spriteB.frame, spriteA.position)
    

    交叉口

    另外,我们也可以检查精灵书写的边界框之间的交集

    CGRectIntersectsRect(spriteA.frame, spriteB.frame)
    

    当 spriteA 和 spriteB 没有相同的父对象时

    现在让我们考虑一下这种情况

    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)
    

    【讨论】:

    • 非常感谢您快速而完整的回答。它解决了这个问题。
    猜你喜欢
    • 2021-10-16
    • 2015-09-13
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多