【问题标题】:How to drag and drop multiple SpriteKit Nodes with the same parent?如何拖放具有相同父级的多个 SpriteKit 节点?
【发布时间】:2014-08-14 04:01:38
【问题描述】:

我有多个可拖动的 SKSpriteNode(一些矩形)(我按照 Sprite Kit Tutorial: How To Drag and Drop Sprites 上的教程进行操作)。当它们之间发生碰撞时,我将它们分组(通过将一个矩形作为父级,将另一个矩形作为子级)。无论我将组合多少个矩形,我总是设法拥有一个父级和多个属于它的矩形。我这样做是因为我想一起移动属于一个组的立方体,我观察到如果我移动父级,我会移动它的所有子级。为了实现这一点,我正在做的是在 touchBegin 处转换组,并使 touchNode 成为父节点,并使这个新父节点的子组的所有其他节点成为父节点。我相信下面这张图可能会让事情更清楚一点。

我面临的问题是,即使我触摸了水平和垂直矩形之间的空白区域(用红色圆圈显示),我也可以拖动该组。由于图像中显示的所有矩形都具有相同的父级,我猜有一个包含所有矩形的边界框,这就是为什么中间的空白可以触发拖动事件。

有人知道我该如何处理这个问题吗?

是否可以有如下图所示的边界框?

提前致谢。

【问题讨论】:

  • 您可以将两个矩形都设为 SKNode 实例的子级,而不是让一个矩形成为父级。这样,您可以确保只有矩形充当任何拖动事件的网关。

标签: ios objective-c ios7 sprite-kit


【解决方案1】:

您需要编写自定义命中测试来执行这种技巧。

对于每次点击 -> 对于每个框(在一定的触摸范围内) -> 对于每隔一个框(在一定的触摸范围内) -> 将两个框框合并为一个(CGRectUnion(, )) 看看你的手指是否在矩形内。

这可能会为许多分散的矩形提供结果,因此请将您对框的初始搜索限制在触摸本身的给定范围内。

除此之外,它只是简单的代码。

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多