如何为 SKSpriteNode 设置最小碰撞角度

How to set minimum collision angle for SKSpriteNode

如何为 SKSpriteNode 对象设置最小碰撞角度,以便当它与任何其他 sprite 碰撞时,它的反转角度始终大于或等于该角度 - 负数或正数 - ?

我的objective是为了防止两条平行边之间的死锁碰撞-例如-,这样球就不会永远在它们之间摆动。

终于,我找到了解决方案 - 可能不是最好的,但效果很好 -.

当精灵与其他精灵碰撞时,我从等式中找到精灵速度角:

角度 = atan(dy/dx)

并检查角度值。如果它小于最小值,我将角度设置为最小值,然后从等式中找到新的速度 dy:

dy_new = dx * tan(new_angle)

并从等式中找到 dx_new:

dx_new = sqrt(pow(dx, 2) + pow(dy, 2) - pow(dx_new, 2));

这意味着速度大小相同,只是方向改变了。 这是基于向量方程:

速度 = sqrt(pow(dx, 2) + pow(dy, 2));和
角度=阿坦(dy/dx);

这里是速度矢量数学的link: http://faculty.wwu.edu/vawter/PhysicsNet/Topics/Vectors/TheVelocityVector.html