NodeAtPoint方法什么时候应该返回SKShapeNode?

时间:2015-09-22 11:41:34

标签: ios objective-c swift sprite-kit

我有一个用SpriteKit编写的iOS应用程序。 它使用4个SKShapeNode元素来确定用户点击屏幕的哪个部分。 所有这些元素都是三角形,它们像大X一样将屏幕分开。 它们是使用CGPath创建的,它绘制了一个三角形。 要确定用户是否点击了节点,我使用场景方法 - NodeAtPoint

在iOS 8.4中,一切都按预期工作:当我点击三角形内部时,NodeAtPoint会返回我刚才点击的SKShapeNode

在iOS 9.0中NodeAtPoint返回SKShapeNode,即使我在其边界之外点击,但在我的SKShapeNode适合的矩形范围内。

所以我的问题是:NodeAtPoint方法应如何适用于SKShapeNode

  1. 如果Point在其形状内,则返回SKShapeNode
  2. 如果Point在其框架内,则返回SKShapeNode

1 个答案:

答案 0 :(得分:0)

请参阅https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/#//apple_ref/occ/instm/SKNode/nodeAtPointSKNode' nodeAtPoint函数始终返回SKNode。然后,您可以将SKShapeNode投射到SKNode。要回答您的其他问题,请使用calculateAccumulatedFrame函数计算帧。你可以在这里看到https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/#//apple_ref/occ/instm/SKNode/calculateAccumulatedFrame 所以你可能会这样做:

if let node = scene.nodeAtPoint(CGPointMake(0,0)) as? SKShapeNode {
//do whatever
}