Spritekit冲突检测。节点移动得如此之快,发生碰撞而没有任何视觉触摸

时间:2015-12-18 05:16:49

标签: sprite-kit

其他任何人都遇到过这个问题。我有两个节点朝着彼此移动。当我提高它们移动的速度时,当第三个节点在前两个节点聚集在一起时尝试在它们之间传递时,它会检测到碰撞,即使您可以看到没有任何节点触及过。我也使用精确的碰撞检测。是他能做的其他事情。

1 个答案:

答案 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)