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。
如果您需要图片中描述的行为无限期地持续下去,您将需要手动设置位置和速度。
假设一个圆圈被一个菱形包围着,并且圆圈朝向正确。当圆在菱形内绘制正方形时,我希望有一系列连续的 90 度角。
然而,我看到的是,经过一两次碰撞后,圆圈最终被推向菱形的中心。怎么回事?
线路设置为动态->NO.
假设球是完全弹性碰撞,它会对称地反射到它的接近角。这意味着,要获得您正在寻找的行为,球需要从一条线的中点到下一条线的中点 精确地 并且没有任何能量损失。
Sprite Kit 的物理引擎将无法处理这些确切的值。 Sprite Kit 中弹性碰撞后的能量不保证守恒。物理引擎的浮点计算会有小的误差。此外,碰撞本身可能无法解析为完美的点对点反射,这意味着球可能 "slide," 这将导致反射角度发生变化。
然而,我仍然希望看到更多的碰撞,而不是一两次。确保两个对象的 restitution
都设置为 1.0,并确保球的 linear damping
设置为 0。affectedByGravity
显然应该是错误的。 Friction
应设置为 0。您可以尝试将 usesPreciseCollisionDetection
设置为 true。
如果您需要图片中描述的行为无限期地持续下去,您将需要手动设置位置和速度。