其他任何人都遇到过这个问题。我有两个节点朝着彼此移动。当我提高它们移动的速度时,当第三个节点在前两个节点聚集在一起时尝试在它们之间传递时,它会检测到碰撞,即使您可以看到没有任何节点触及过。我也使用精确的碰撞检测。是他能做的其他事情。
答案 0 :(得分:1)
由于我们确定了问题,我将把它作为答案发布:
正在发生的事情是在更新阶段,您正在删除与碰撞有关的所有节点,因此您永远不会看到它们触摸。
您需要做的是跟踪将删除哪些节点(一个很好的SKNode数组正常工作),然后在更新阶段的开始,立即检查删除的节点是否为空。如果它不是空的,那么你需要通过它并从场景中删除它们。
示例:
var removeNodes = [SKNode]()
...
func update(currentTime: CFTimeInterval)
{
if(removeNodes.count > 0)
{
for node in removeNodes
{
node.removeFromParent()
}
}
removeNodes.removeAll()
}
... normal update code
...at some point after collision
//node A needs to be removed
removeNodes.append(nodeA)