我試圖檢測一個拋射物是否打到盾牌 - 碰撞發生在哪裏。檢測可能的拋射物與盾牌的碰撞
在此圖中,可以看到的局面。儘管A
和B
的彈丸與盾牌中心S
的距離大致相同,但其中一個將與盾牌相撞,而另一個則不會。
解決方案,簡單的數學會用圓的數學公式和彈丸路徑的直線的方程。
用筆和紙,我可以計算出來。但是,我直接實施解析幾何的經驗非常糟糕。
此外,這將返回正面的射彈離開盾牌。我如何過濾它們?
第二條本辦法,朋友的想法,是測量彈丸路徑和屏蔽中心之間的最小距離 - 如果l
比r
較小,碰撞發生。
這似乎更容易實施,但不讓我知道碰撞發生在何處。
我在2個維度工作。我正在使用C#和Unity引擎,但是歡迎使用通用解決方案。
拋射物當然被認爲是零點大小的點。
如果你做了正確的數學運算,並開始使用射線的原點和t次直方向矢量,那麼實際擊中圓圈的解將具有正的t。另一種方法也很好,你只需要爲光線和垂直於它的直線在圓的中心找出線條碰撞。你應該能夠計算l的入口和出口點(提示,它就像sqrt(1 - x^2))。 – masterxilo