我的场景中有几个节点,我可以旋转和拖动。我建立了一个physicsWorld委托,为我的节点添加了类型为kinematic的physicsBody并检查了PhysicsWorld didBeginContact - 到目前为止,一切正常,当我移动节点时,联系开始/结束触发。Scenekit-physicsWorld设置防止运动节点相交
我试图解决这个问题的方法是设置一个布尔变量,一旦联系开始,以防止进一步移动,但我遇到案件(特别是如果我拖动节点太快),更改为真,该节点在另一个对象内稍微有一点点。
我应该对此采用不同的方法吗?我不是真的想要碰撞,只是另一个节点表现“坚实”,即使在更高速的接触下也不允许相交。
编辑:
一些样本图像以进一步澄清该问题:
为了简单起见我已经添加仅2个节点来证明的问题。第一张图像是初始位置,第二张和第三张(侧面图)在非常快速的平移之后。只有在节点已经相交后才触发联系检测。
我尝试的一种方法是在联系人被触发前抓住最后一个位置,并在检测到接触后重新设置节点位置,但结果非常不稳定并且不稳定,并且瞬间可以看到物体相交然后跳到最后的“好”位置。我觉得必须有一些更简单的方法来实现这一点,但花费数小时后,通过可用资源,我无法弄清楚。
EDIT 2
进一步研究朝下扫描试验线,technicaly如果我能发现可能的碰撞之前我移动节点,我应该能够限制运动停止intersetion发生
前UPDATE:另一个死胡同,因为Xcode中指出
Error: convexSweep only works with convex shapes