在SpriteKit中检测节点特定区域的触摸

时间:2018-07-17 19:25:23

标签: swift xcode sprite-kit skspritenode

如何检测节点特定区域上的触摸?

只是一个例子:

https://i.stack.imgur.com/8jvFb.png

仅当触摸红色节点的左下部分(黄色矩形)时,我才能执行操作吗?

这是当节点的任何部分被触摸时我必须执行的操作:

if atPoint(location).name == "bubble"{
                node.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 70))
            }

2 个答案:

答案 0 :(得分:0)

我认为最简单的方法可能是检测整个节点上的触摸。一旦获得触摸的位置,请检查该位置是否在所需区域内。例如,如果区域被x限制为0到30,则检查触摸位置的x是否在0到30之间。对y进行类似的检查。如果x和y都在范围内,则触摸发生在您想要的区域中,然后您可以执行所需的操作。

希望这会有所帮助!

答案 1 :(得分:0)

您可以为黄色区域定义一个矩形,如下所示,

let yellowBox = CGRect(x: 0, y: 0, width: 40, height: 40)

您可以根据需要更新xywidthheight值。

然后您可以在任何节点内找到触摸的触摸位置,如下所示,

let touchPoint = touch.location(in: bubbleNode)

现在,您可以简单地检查touchPoint是否在yellowBox内,如下所示,

if yellowBox.contains(touch) {
   print("Yellow box is touched!")
}

您可以检查here以获得有关如何在节点中获取touchLocation的更多详细信息。