SCNPhysicsBody调用联系委托但不会高速冲突?

rb6*_*612 7 collision-detection scenekit swift

我在SceneKit中制作了一个测试"断路器"游戏,并试图加快速度.在某一点上,球会一直穿过我的界限.不太清楚为什么,我放慢到1 FPS并拍下这个截图:

截图

在查看Apple的文档时:

一个小小的身体可能移动得如此之快,以至于它完全穿过另一个物理身体而没有动画帧,两者相互接触.

然而,很明显球正在接触边界,但仍然通过.联系代表也将注册冲突.这是x速度和z速度各50-100.这种情况不应该导致球反弹,因为球在球触及障碍物的情况下渲染?除此之外,我如何在SceneKit中检查超快速碰撞?我听说在SpriteKit中可以使用usesPreciseCollisionDetection,但在SceneKit中似乎并非如此.

为了准确了解边界的样子,它们是两个圆柱体,两者之间没有空隙.

在此输入图像描述 编辑:似乎将边界上的物理形状更改为凸面或凹面而不是边界框有帮助,但不能完全阻止联系人注册,但不会发生碰撞.如果我创建一个新的障碍,它也会相同 - 它会以足够高的速度通过,同时仍然注册联系代表.任何理论为什么?

编辑2:从这个问题的评论,这里是didBegin通过设置断点调用where的截图.你可以看到球刚刚离开障碍物.当x-velocity或z-velocity设置为大约29-40(dropbox.com/s/rbxh4rg0qhpgxmy/Breaker.zip?dl=0链接到下载项目)时,它开始通过,并且它是否通过是完全不可靠的或之后.始终虽然didBegin是所谓的,但并非总是如此didEnd 在此输入图像描述