【发布时间】:2014-02-18 21:08:30
【问题描述】:
我有一个子节点添加到另一个节点。我想获取相对于视图坐标而不是父节点坐标的子节点位置
【问题讨论】:
标签: ios sprite-kit coordinate-systems
我有一个子节点添加到另一个节点。我想获取相对于视图坐标而不是父节点坐标的子节点位置
【问题讨论】:
标签: ios sprite-kit coordinate-systems
获取子节点相对于其父节点的position,然后使用convertPoint:fromNode:或convertPoint:toNode:方法将父节点的坐标系转换为场景的坐标系。 (请记住,SKScene 继承自 SKNode 并且是节点层次结构的根,因此您可以使用其中任何一种方法。)如果您需要在 UIKit 视图坐标空间中工作,请使用场景的 @987654324 @方法。
【讨论】:
如果“视图坐标”是指场景坐标,请查看我使用的这个快速解决方案:
extension SKNode {
var positionInScene:CGPoint? {
if let scene = scene, let parent = parent {
return parent.convert(position, to:scene)
} else {
return nil
}
}
}
然后你可以像获取常规位置一样获取场景位置。这是一个例子:
let positionInParent = childNode.position
let positionInScene = childNode.positionInScene? //optional return type
请注意 positionInScene 属性是可选的,原因与 SKNode 的场景属性是可选的相同,节点可能不会添加到场景中。在这种情况下,你得到零。您甚至可以反转该过程并添加一个设置器,这样您就可以将每个节点定位在场景坐标中,无论它被埋得有多深。
【讨论】: