检查 SCNNode 是否在视图中重叠
Check if SCNNodes overlap in view
如何检测两个 SCNNodes
在 SCNView
中是否重叠?它们被添加到 different x an z axis
位置,但从相机的角度来看它们看起来像是重叠在一起。我想检测到这一点,然后将其中一个向上或向下移动。
对于那些以后会遇到这个问题的人...
我用 SCNNode 的 simdWorldPosition 属性 修复了这个问题。这是代码:
let overlapping = wayNamedLocationNode.infoTextNodes.filter { overlappingTextNode in
let x = abs(overlappingTextNode.simdWorldPosition.x - textNode.simdWorldPosition.x)
let z = abs(overlappingTextNode.simdWorldPosition.z - textNode.simdWorldPosition.z)
if ((x < 4 && x > 0) || (z < 4 && z > 0)) {
return true
} else {
return false
}
}
if overlapping.count > 0 {
overlapping.forEach { [=10=].removeFromParentNode() }
}
首先我找到了所有重叠的节点,然后我简单地将它们从父节点中删除。
如何检测两个 SCNNodes
在 SCNView
中是否重叠?它们被添加到 different x an z axis
位置,但从相机的角度来看它们看起来像是重叠在一起。我想检测到这一点,然后将其中一个向上或向下移动。
对于那些以后会遇到这个问题的人... 我用 SCNNode 的 simdWorldPosition 属性 修复了这个问题。这是代码:
let overlapping = wayNamedLocationNode.infoTextNodes.filter { overlappingTextNode in
let x = abs(overlappingTextNode.simdWorldPosition.x - textNode.simdWorldPosition.x)
let z = abs(overlappingTextNode.simdWorldPosition.z - textNode.simdWorldPosition.z)
if ((x < 4 && x > 0) || (z < 4 && z > 0)) {
return true
} else {
return false
}
}
if overlapping.count > 0 {
overlapping.forEach { [=10=].removeFromParentNode() }
}
首先我找到了所有重叠的节点,然后我简单地将它们从父节点中删除。