SCNPhysicsBody调用联系代表,但不会高速发生冲突?

时间:2017-01-02 07:51:21

标签: swift collision-detection scenekit

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

screenshot

在查看Apple的文档时:

  

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

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

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

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

编辑2:从这个问题的评论中,这里是通过设置断点来调用didBegin的屏幕截图。你可以看到球刚刚离开障碍物。当x-velocity或z-velocity设置为大约29-40(dropbox.com/s/rbxh4rg0qhpgxmy/Breaker.zip?dl=0链接到下载项目)时,它开始通过,并且它是否通过是完全不可靠的或之后。但始终会调用didBegin,但并不总是didEnd enter image description here

0 个答案:

没有答案