如何检测其他 SKSpriteNodes 的子节点的相交节点

How to detect intersecting nodes of children of other SKSpriteNodes

希望大家能帮上忙。我正在开发棋盘游戏的应用程序。我有随机调用并在游戏开始时布置的六角形瓷砖。这些图块中的每一个都有四个边,值为 1,另外两个边的值为 2 和 3。

每个图块都是一个SKSpriteNode,边缘有透明矩形节点。有 5 种不同类型的图块,它们需要是带有子节点的独立精灵,因为除了随机布局外,它们的区域也会随机旋转。所以我需要以编程方式知道哪些瓷砖边缘正在接触其他瓷砖的哪些边缘。

像这样:

https://app.box.com/s/nnym97st3xmrsx979zchowdq1qwsmpoo

(我试图 post 我想要完成的事情的图像,但显然我没有足够高的评级。) ;-)

例如:如果“2”接触到“3”等

我首先尝试了碰撞检测,但当然这只适用于动态移动的物体。

我尝试了一个 IF 语句来比较其他节点是否接触,然后记住了特定于父节点的坐标,所以这不起作用。

然后我尝试了 intersectsNode,但这似乎只适用于同一父级下的节点。 我目前正在使用 convertPoint 以获得与场景匹配的坐标,从而具有可比性。但我似乎无法按照我需要的方式让它工作。

肯定有一些简单的东西我没有看到。有什么想法吗?

当然不简单

一个解决方案是开始时将所有形状彼此稍微隔开。将带有物理体的不可见子节点添加到所有六个侧面,并根据每个物理体的等级(1、2 或 3)为每个物理体指定一个适当的类别。

当您开始游戏时,使用您喜欢的任何移动方法将所有外部节点移动到适当的位置(边接触)。当每个六边形边相互接触时,这将为您提供联系信息。联系消息会告诉你哪个边号正在接触它的邻居。

这个想法的确切编码取决于您当前的代码、游戏玩法等...