如何設置SKSpriteNode對象的最小碰撞角度,以便當碰撞到任何其他sprite時,其反轉角度始終大於或等於此角度 - 無論是負值還是正值 - ?如何設置SKSpriteNode的最小碰撞角度
我的目標是防止兩個平行邊緣之間的死鎖碰撞 - 例如 - ,以便球不會永遠在它們之間擺動。
如何設置SKSpriteNode對象的最小碰撞角度,以便當碰撞到任何其他sprite時,其反轉角度始終大於或等於此角度 - 無論是負值還是正值 - ?如何設置SKSpriteNode的最小碰撞角度
我的目標是防止兩個平行邊緣之間的死鎖碰撞 - 例如 - ,以便球不會永遠在它們之間擺動。
最後,我找到了一個解決方案 - 可能不是最好的,但它工作正常。
當精靈與其它一個碰撞,我發現從等式精靈速度角度:
角= 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
一個臨時的解決方案,我發現是檢查精靈的速度,當它發生碰撞,如果低於最低值,在申請衝動具有大值的精靈來避免死鎖。我也嘗試設置速度的dx和dy,但是這改變了我不想要的精靈速度意義。 –