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

Posted

技术标签:

【中文标题】检测 SpriteKit 中节点特定区域的触摸【英文标题】:Detect touch on specific area of a node in SpriteKit 【发布时间】:2018-07-17 19:25:22 【问题描述】:

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

只是一个例子:

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

如何仅在触摸红色节点的左下部分(黄色矩形)时执行操作?

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

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

【问题讨论】:

这个黄色矩形是怎么做出来的? 只是截图上的图。 所以你的应用中不存在黄色框? 不,它没有。 【参考方案1】:

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

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 的更多详细信息。

【讨论】:

【参考方案2】:

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

希望这会有所帮助!

【讨论】:

以上是关于检测 SpriteKit 中节点特定区域的触摸的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit:如何检测从节点外部开始的节点上的触摸

SpriteKit - 如何检测使用触摸影响哪个节点?

在 Spritekit 中更改场景,检测按钮上的触摸

(Swift + Spritekit) - 完全删除节点及其数据

touchesBegan Swift 2 自定义 SpriteKit 节点

如何在 SpriteKit 中使用 SKShapeNode 通过触摸特定路径来绘制路径