检测外部/远离精灵的水龙头

时间:2015-12-09 02:37:59

标签: ios swift sprite-kit

我有一个游戏,其中有一个绿色圆圈在一个场景上的随机位置随机产生,每次点击圆圈就会改变位置,稍微有可能变成红色。当圆圈为红色时,我希望用户点击不是红色圆圈的屏幕空间。如何检测不在圆圈上的水龙头?我的圈子是SKShapeNode。我使用touchesBegan函数处理触摸。

1 个答案:

答案 0 :(得分:1)

要确定用户的触摸是在圆圈的内部还是外部,1)计算触摸与圆心之间的距离,2)比较该距离是否小于或等于半径圈子。以下是如何执行此操作的示例:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {        
    for touch in touches {
        let location = touch.locationInNode(self)

        let dx = location.x - circle.position.x
        let dy = location.y - circle.position.y

        let distance = sqrt(dx*dx + dy*dy)

        if (distance <= CGFloat(radius)) {
            print ("inside of circle")
        }
        else {
            print ("outside of circle")
        }
    }
}