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