如何设置SKSpriteNode对象的最小碰撞角度,以便当它与任何其他精灵碰撞时,其反转角度始终大于或等于此角度 - 负面或正面 - ?
我的目标是防止两个平行边缘之间发生死锁冲突 - 例如 - 这样球就不会永远在它们之间振荡。
答案 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