SpriteKit - 如何检查某个坐标是否在SKShapeNode中?

时间:2014-06-03 11:41:07

标签: coordinates sprite-kit skshapenode

在我的游戏中,我试图根据箭击中目标的位置确定要分出的点数。我已经完成了物理和碰撞,我决定绘制几个嵌套的圆形SKShapeNodes来代表目标的不同环。

我在解决检查接触点坐标是否在其中一个圆形节点中的问题时遇到了问题...

甚至可能吗?

2 个答案:

答案 0 :(得分:3)

Sprite Kit特有的最简单的解决方案是使用SKPhysicsWorld方法bodyAtPoint:,假设所有SKShapeNode都有一个合适的SKPhysicsBody。

例如:

SKPhysicsBody* body = [self.scene.physicsWorld bodyAtPoint:CGPointMake(100, 200)];
if (body != nil)
{
    // your cat content here ...
}

如果在同一点可能存在重叠的主体,则可以使用enumerateBodiesAtPoint:usingBlock:

枚举它们

答案 1 :(得分:2)

您还可以将SKShapeNode的路径与CGPoint进行比较。

SKShapeNode node; // let there be your node
CGPoint point;   // let there be your point

if (CGPathContainsPoint(node.path, NULL, point, NO)) {
   // yepp, that point is inside of that shape
}