我有一个用SpriteKit编写的iOS应用程序。
它使用4个SKShapeNode
元素来确定用户点击屏幕的哪个部分。
所有这些元素都是三角形,它们像大X一样将屏幕分开。
它们是使用CGPath
创建的,它绘制了一个三角形。
要确定用户是否点击了节点,我使用场景方法 - NodeAtPoint
。
在iOS 8.4中,一切都按预期工作:当我点击三角形内部时,NodeAtPoint
会返回我刚才点击的SKShapeNode
。
在iOS 9.0中NodeAtPoint
返回SKShapeNode
,即使我在其边界之外点击,但在我的SKShapeNode
适合的矩形范围内。
所以我的问题是:NodeAtPoint
方法应如何适用于SKShapeNode
?
SKShapeNode
。SKShapeNode
。答案 0 :(得分:0)
请参阅https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/#//apple_ref/occ/instm/SKNode/nodeAtPoint:
SKNode
' 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
}