检测 SpriteKit 中节点特定区域的触摸
Detect touch on specific area of a node in SpriteKit
如何检测节点特定区域的触摸?
举个例子:
https://i.stack.imgur.com/8jvFb.png
如何只在触摸到红色节点的左下部分(黄色矩形)时才执行操作?
这是当节点的任何部分被触摸时我必须执行的操作:
if atPoint(location).name == "bubble"{
node.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 70))
}
我认为最简单的方法可能是检测整个节点上的触摸。获得触摸位置后,检查该位置是否在您想要的区域内。例如,如果该区域受 x 从 0 到 30 的限制,请检查触摸位置的 x 是否在 0 到 30 之间。对 y 进行类似的检查。如果x和y都在边界内,那么触摸发生在你想要的区域,然后你就可以执行你需要的动作了。
希望对您有所帮助!
你可以为黄色区域定义一个矩形,如下所示,
let yellowBox = CGRect(x: 0, y: 0, width: 40, height: 40)
您可以根据需要更新 x
、y
、width
和 height
值。
然后你可以找到任何节点内的触摸位置,如下所示,
let touchPoint = touch.location(in: bubbleNode)
现在您可以简单地检查 touchPoint
是否在 yellowBox
内,如下所示,
if yellowBox.contains(touch) {
print("Yellow box is touched!")
}
您可以查看 以获取有关如何在节点中获取 touchLocation
的更多详细信息。
如何检测节点特定区域的触摸?
举个例子:
https://i.stack.imgur.com/8jvFb.png
如何只在触摸到红色节点的左下部分(黄色矩形)时才执行操作?
这是当节点的任何部分被触摸时我必须执行的操作:
if atPoint(location).name == "bubble"{
node.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 70))
}
我认为最简单的方法可能是检测整个节点上的触摸。获得触摸位置后,检查该位置是否在您想要的区域内。例如,如果该区域受 x 从 0 到 30 的限制,请检查触摸位置的 x 是否在 0 到 30 之间。对 y 进行类似的检查。如果x和y都在边界内,那么触摸发生在你想要的区域,然后你就可以执行你需要的动作了。
希望对您有所帮助!
你可以为黄色区域定义一个矩形,如下所示,
let yellowBox = CGRect(x: 0, y: 0, width: 40, height: 40)
您可以根据需要更新 x
、y
、width
和 height
值。
然后你可以找到任何节点内的触摸位置,如下所示,
let touchPoint = touch.location(in: bubbleNode)
现在您可以简单地检查 touchPoint
是否在 yellowBox
内,如下所示,
if yellowBox.contains(touch) {
print("Yellow box is touched!")
}
您可以查看 touchLocation
的更多详细信息。