通过 SpriteKit 中的节点进行触摸

Klu*_*tch 4 touch-event ios sprite-kit skspritenode skshapenode

所以我正在致力于制作一款塔防游戏,让瓷砖板正常工作并能够在一定程度上放置塔楼。

当玩家单击网格上方的按钮时,它将切换塔的放置并允许玩家将塔放置在网格内的单元格上。然而,每个塔周围都有一个圆形 ShapeNode 来处理移动进入射击范围的蠕变的检测。一旦我放置它们,这个形状节点就会很好地显示在塔周围。

我用来放置塔的逻辑是它找到您触摸的节点(名为“单元”)并将其替换为塔节点。但是,如果塔节点附加了圆形节点并覆盖了旁边的单元格,则我无法选择圆形下方的单元格节点。

我将如何“触摸”圆圈,或者将其填充空间设置为空,以便我可以访问其下方的单元格?

我仍在学习 sprite-kit,所以如果有更简单的方法,请随时为我指出正确的方向。

nac*_*oss 5

如果你想在给定点找到一个节点,但不一定是最深的节点,你可以使用nodesAtPoint:在SKNode(包括SKScene)上可用。

这允许您找到场景的所有子节点或与给定点相交的节点。然后,您可以进一步过滤以找到所需的特定节点,也许可以根据节点类或节点名称过滤数组。

如果在特定点查找物理体,可以使用类似的方法,使用SKPhysicsWorld 中提供的enumerateBodiesAtPoint:usingBlock:方法

值得注意的是,当使用nodesAtPoint:时,该点位于调用节点坐标系中,而enumerateBodiesAtPoint:usingBlock:将始终位于场景坐标系中。