Spritekit碰撞检测.节点移动如此之快,以至于在没有任何视觉触摸的情况下发生碰撞



其他人都有过这个问题。我有两个节点相互移动。当我提高它们的移动速度时,当前两个节点走到一起时,第三个节点试图在它们之间通过时,它会检测到碰撞,即使你可以看到没有一个节点接触过。我也在使用精确的碰撞检测。他们还有什么我能做的吗?

既然我们确定了这个问题,我将把它作为一个答案发布:

发生的情况是,在更新阶段,您将删除所有与碰撞有关的节点,因此您永远不会看到它们接触。

相反,您需要做的是跟踪将要删除的节点(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)

最新更新