如何使用相同的父项拖放多个SpriteKit节点?

时间:2014-06-24 02:15:47

标签: ios objective-c ios7 sprite-kit

我有多个可拖动的SKSpriteNodes(一些矩形)(我按照Sprite Kit Tutorial: How To Drag and Drop Sprites上的教程)。当它们之间发生碰撞时,我将它们分组(通过使一个矩形成为父项而另一个作为子项)。无论我将合并多少个矩形,我总是设有一个父项和多个属于它的矩形。我正在这样做因为我想将属于一个组的多维数据集移动到一起,我观察到如果我移动父项,我会移动它的所有子项。我要做的是在touchBegin上转换组,并使被触摸的节点成为父节点以及该新父节点的组子节点的所有其他节点。我相信下面的图片可能会让事情变得更加清晰。

A group of rectangles

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

有谁知道如何处理这个问题?

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

提前致谢。

enter image description here

1 个答案:

答案 0 :(得分:1)

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

每次点击 - >对于每个盒子(在一定的触摸范围内) - >对于每隔一个盒子(在一定的触摸范围内) - >将两个框框合并为一个(CGRectUnion(< #CGRect r1#>,< #CGRect r2#>))并查看您的手指是否在矩形内。

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

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