我试图在某些节点到达某个 x 位置后从父节点中删除它们。我遇到的问题是父节点正在更改 x 位置,但子节点没有更改父节点内的 x 位置(但显然与父节点一起移动),因此当我输入 if node.position.x < 300 时。 。 。 (删除节点),什么也没有发生。我尝试了下面的代码,但这只能工作一次,然后不会再次删除节点,我不能 100% 确定它停止工作的原因。
func cleanUp() {
let positionX = nodeBase.position.x
nodeBase.enumerateChildNodesWithName("segment", usingBlock: {
node, stop in
if node.position.x - positionX < 300 {
node.removeFromParent()
}
})
}
任何人都可以看到我的代码哪里出了问题,或者你能给我指出正确的方向吗?
最佳答案
尝试以下操作:
nodeBase.enumerateChildNodesWithName("segment") { node, _ in
if !self.intersectsNode(node) {
node.removeFromParent()
}
}
当 node
位于 SKScene
边界内时,intersectsNode
返回 true
。因此,当 intersectsNode
返回 false
时,您就知道该节点位于屏幕外,您可以删除该节点。
关于swift - EnumerateChildNodesWithName,似乎无法删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548965/