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

时间:2015-03-24 23:54:22

标签: ios swift sprite-kit

我希望你们都能帮助解决这个问题。我正在开发一款棋盘游戏的应用程序。我有六角形的瓷砖,在游戏开始时随机调用并布置。这些图块中的每一个都具有四个边,值为1,另外两个边的值为2和3.

每个图块都是一个SKSpriteNode,边缘有透明的矩形节点。有5种不同类型的瓷砖,它们需要与子节点分开的Sprite,因为除了随机布局外,它们还随机旋转。所以我需要以编程方式知道哪些瓷砖边缘接触其他瓷砖的哪些边缘。

像这样:

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

(我试图发布一张我想要完成的图片,但显然我没有足够高的评分。); - )

例如:如果" 2"正在触及" 3"等等。

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

我尝试了一个IF语句来比较其他节点是否正在触摸,然后记住特定于父节点的坐标,这样就没有用了。

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

必须有一些我没有看到的简单。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当然不简单。

一种解决方案是将所有形状彼此略微间隔开来。向所有六个边添加具有物理实体的不可见子节点,并根据其等级(1,2或3)为每个物理主体提供适当的类别。

当您开始游戏时,使用您喜欢的任何移动方法将所有外部节点移动到正确的位置(侧面接触)。这将为您提供联系人消息,因为每个六边形接触另一个。联系人消息将告诉您哪个边号正在触及其邻居。

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

enter image description here