我正在尝试检测和管理球体(带有运动体)和立方体(带有静态体)之间的碰撞。两个节点都具有基于基元的物理形状。

出于测试目的,我将 sphereNode 移动到多维数据集的表面上,并按预期调用我的函数 didBeginContact。

现在,如果我通过 0.1 提升我的球体,我的函数 didEndContact 也会按预期调用。但是如果相反我将它提升 0.2 或更多,则永远不会调用 didEndContact。

当我使球体和盒子相交时也会发生同样的情况。如果我按 0.1 移动我的球体,只调用 didUpdateContact(如预期的那样)。但是如果我按 0.2 移动它,那么在再次调用 didBeginContact 之前调用 didEndContact。我的球体从未停止与盒子相交。

这些结果取决于每帧球体的平移距离,还取决于球体半径。

有谁知道为什么 SCNPhysicsContact 有这种行为?