微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将一个 SpriteNode 的坐标转换为另一个不是子节点或后代节点的坐标

如何解决如何将一个 SpriteNode 的坐标转换为另一个不是子节点或后代节点的坐标

在我的 SpriteKit 场景中,我进行了以下设置:

多个名为 sourceNode 的节点是场景的直接子节点。 名为 targetNode 的节点是另一个名为 sectionNode 的节点的子节点,sectionNode 也是 scene 的子节点。

self --> sourceNode

self --> sectionNode --> targetNode

当使用 touchesMoved 方法移动 sourceNode 时,我将 positionsourceNode 设置为触摸的当前位置。一旦触摸位置高于 targetNode,我想通过匹配它们的位置将 sourceNode 对齐到 targetNode

我的问题:

我似乎无法在两个坐标空间之间正确转换。我尝试了 convert(_:from:)convert(_:to:) 的不同变体,但都不起作用。我知道 convert 期望两个节点都在同一个节点树中,但由于它们都是场景的后代,所以它们不应该被视为同一节点树的一部分吗?

(如果 sourceNodetargetNode 与兄弟姐妹在同一个坐标系中,代码只需将 targetNode 的位置分配给 {{1} })

sourceNode

解决方法

要将 sourceNode 移动/捕捉到 targetNode 的坐标,您可以执行以下操作:

sourceNode.move(toParent: sectionNode)
sourceNode.position = targetNode.position
sourceNode.move(toParent: scene)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。