Xcode SpriteKit-旋转后选择节点

Xcode SpriteKit-旋转后选择节点,xcode,sprite-kit,Xcode,Sprite Kit,一个名为“叶”的SKSpriteNode作为子节点添加到另一个名为“AllObject”的SKSpriteNode AllObject设置为与SKView相同的宽度和高度 我将叶子拖到AllObject上的某个位置,单击其尖端的一个独特部分,然后使用println在控制台中获取以下内容 touch开始,touch.locationInNode(所有对象):(621.5156.75) touchesEnded,touch.locationInNode:(621.5156.75) 触碰,叶片位置:(

一个名为“叶”的SKSpriteNode作为子节点添加到另一个名为“AllObject”的SKSpriteNode

AllObject设置为与SKView相同的宽度和高度

我将叶子拖到AllObject上的某个位置,单击其尖端的一个独特部分,然后使用println在控制台中获取以下内容

touch开始,touch.locationInNode(所有对象):(621.5156.75)

touchesEnded,touch.locationInNode:(621.5156.75)

触碰,叶片位置:(695.375,83.25)

touchesEnded,节点(位置)。名称:可选(“叶”)

到目前为止,一切顺利。在这一点上,我可以随意拖动树叶,没有问题。需要注意的重要部分是nodeAtPoint如预期的那样是“leaf”

但是,如果我旋转AllObject,如下所示:

var rotate = SKAction()
rotate = SKAction.rotateByAngle(0.4, duration: 0)
allObjects.runAction(rotate)
…然后单击叶子上的相同位置(在IOS模拟器中可视),我在控制台中得到以下内容。我不明白为什么我旋转了所有对象并在相同的位置单击(并获得相同的坐标),我不再选择叶子,而是在很大的范围内遗漏了它(nodeAtPoint显示我正在点击背景)

触摸开始,触摸位置Innode(所有对象):(620.813842773438, 156.470306396484)

touchesEnded,touch.locationInNode:(620.813842773438156.470306396484)

触碰,叶片位置:(695.375,83.25)

touchesEnded,节点(位置)。名称:可选(“AllObject”)


有人能帮忙吗?

位置Innode
节点点
中使用的节点和坐标需要一致。在这种情况下,
locationInNode
返回的点位于
allObjects
坐标中,而
nodeAtPoint
调用(即
self.nodeAtPoint
)需要场景坐标中的点。要解决此问题,您可以替换

nodeAtPoint(location)

或替换

let location = touch.locationInNode(allObjects)
用这个

let location = touch.locationInNode(self)

谢谢,@0x141E,很清楚。第一个建议对我有效:allObjects.nodeAtPoint(location)。
let location = touch.locationInNode(self)