SpriteKit 直线和圆的碰撞角度是奇数

SpriteKit collision angle of line and circle is odd

假设一个圆圈被一个菱形包围着,并且圆圈朝向正确。当圆在菱形内绘制正方形时,我希望有一系列连续的 90 度角。

然而,我看到的是,经过一两次碰撞后,圆圈最终被推向菱形的中心。怎么回事?

线路设置为动态->NO.

假设球是完全弹性碰撞,它会对称地反射到它的接近角。这意味着,要获得您正在寻找的行为,球需要从一条线的中点到下一条线的中点 精确地 并且没有任何能量损失。

Sprite Kit 的物理引擎将无法处理这些确切的值。 Sprite Kit 中弹性碰撞后的能量不保证守恒。物理引擎的浮点计算会有小的误差。此外,碰撞本身可能无法解析为完美的点对点反射,这意味着球可能 "slide," 这将导致反射角度发生变化。

然而,我仍然希望看到更多的碰撞,而不是一两次。确保两个对象的 restitution 都设置为 1.0,并确保球的 linear damping 设置为 0。affectedByGravity 显然应该是错误的。 Friction 应设置为 0。您可以尝试将 usesPreciseCollisionDetection 设置为 true。

如果您需要图片中描述的行为无限期地持续下去,您将需要手动设置位置和速度。