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

时间:2015-11-18 12:10:04

标签: ios sprite-kit skspritenode skphysicscontact

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

我的目标是防止两个平行边缘之间发生死锁冲突 - 例如 - 这样球就不会永远在它们之间振荡。

1 个答案:

答案 0 :(得分:2)

最后,我找到了一个解决方案 - 可能不是最好的,但它运行正常 - 。

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

angle = 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));

这意味着速度幅度相同,但只改变方向。 这是基于矢量方程:

speed = sqrt(pow(dx,2)+ pow(dy,2));和
angle = atan(dy / dx);

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