ios - 将子 SKNode 添加到现有 SKNode 会更改触摸区域

标签 ios sprite-kit skspritenode sknode

我正在为场景创建一个 SKNode,并在每个单独的 SKNode 上记录触摸事件。我可以根据需要添加任意数量的内容,如果我触摸节点并且只有可见的节点,我才能看到日志消息,并且触摸会按预期工作。现在,如果我将另一个 SKShapeNode 添加到之前的任何一个 SKNode,触摸区域将扩展为更多的矩形,现在即使我触摸到原始 SKNode 之外,我也会看到日志消息。

第一张图片显示了SKNode的原始触摸区域,第二张是为该SKNode添加子SKShapeNode后的新触摸区域。添加的 SKShapeNode 为 20x20,因此它适合 20x100 条。

问题是我现在在触摸其他条时会收到多个触摸事件,因为它们重叠。有什么办法解决这个问题吗?

Touch area shown in blue for that SKNode New touch area after adding a child SKShapeNode

最佳答案

您似乎为线条的每个角度使用了单独的图形。而是尝试在 0 度的线条上使用相同的图形,然后使用 zRotation倾斜它。我自己没有尝试过,但我认为它会解决您的问题。

或者尝试使用 containsPoint在 touchesBegan 方法中进行触摸识别。您可以检查触摸是否在任何节点内并进行相应处理。

关于ios - 将子 SKNode 添加到现有 SKNode 会更改触摸区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195474/

相关文章:

objective-c - UISearchDisplayController 的搜索结果具有与搜索表不同的单元格布局和行为

ios - 如何从 .c 文件向 swift 类发送通知或委托(delegate)回调?

ios - SKShapeNode 的替代品

ios - SKLabelNode labelNodeWithFontNamed:

swift - 使用 sprite 工具包垂直滚动背景的问题

ios - 使用 xcode 4.6 从 ios 模拟到 ios 设备

objective-c - 对话框中的枚举

ios - 有什么方法可以让触摸节点不是 SKNode 而是我从 SKSpriteNode 派生的自定义类

ios - SKSpriteNode 子类化 swift

ios - SKAction.rotate 不起作用?