问题描述
在我的 SpriteKit 场景中,我进行了以下设置:
多个名为 sourceNode
的节点是场景的直接子节点。
名为 targetNode
的节点是另一个名为 sectionNode
的节点的子节点,sectionNode
也是 scene
的子节点。
self
--> sourceNode
self
--> sectionNode
--> targetNode
当使用 touchesMoved
方法移动 sourceNode
时,我将 position
的 sourceNode
设置为触摸的当前位置。一旦触摸位置高于 targetNode
,我想通过匹配它们的位置将 sourceNode
对齐到 targetNode
。
我的问题:
我似乎无法在两个坐标空间之间正确转换。我尝试了 convert(_:from:)
和 convert(_:to:)
的不同变体,但都不起作用。我知道 convert
期望两个节点都在同一个节点树中,但由于它们都是场景的后代,所以它们不应该被视为同一节点树的一部分吗?
(如果 sourceNode
和 targetNode
与兄弟姐妹在同一个坐标系中,代码只需将 targetNode
的位置分配给 {{1} })
sourceNode
解决方法
要将 sourceNode 移动/捕捉到 targetNode 的坐标,您可以执行以下操作:
sourceNode.move(toParent: sectionNode)
sourceNode.position = targetNode.position
sourceNode.move(toParent: scene)