簡體   English   中英

C#數學,碰撞檢測,xna

[英]C# maths, collision detection, xna

我在游戲中進行碰撞檢測。 所有表面都是正交的,因此我只需要確定移動物體與障礙物的哪一側相撞即可。 我有定義兩個對象相交的矩形和代表運動對象速度和運動方向的矢量。

我估計我需要沿着運動對象矢量平移交點矩形,直到交點變成一條線,然后我才能知道哪張臉與1st發生了碰撞。

我不知道如何以編程方式從數學上做到這一點 在此處輸入圖片說明

在此處輸入圖片說明

計算從(物體內部障礙物的一角)到(物體內部障礙物的一角)的向量。 您的運動矢量在該矢量的哪一側都給出了最先接觸到的那一側。 如果它們具有相同的角度,則首先觸摸角。

例如,此處的運動矢量約為260度,然后計算出的矢量約為240度。 從計算到運動的逆時針方向為20度,順時針方向為340度。 因此,逆時針側(底部)首先發生碰撞。

您需要能夠分辨出哪兩個方面存在問題,哪些是“順時針”和“逆時針”的-我希望這是微不足道的。

可以將比較縱橫比速度矢量的向相交矩形的縱橫比。

對於此特定示例,如果速度矢量比相交矩形陡峭(即定義了一個更高,更細的矩形),則碰撞發生在底面上。

如果速度矢量較淺,則碰撞發生在移動矩形的左側。

如果速度向量與相交矩形具有相同的長寬比(即速度位於相交矩形的對角線上),則它們會碰撞到角上。

其實我可能已經知道了...

  • 在交點矩形上找到不在對象矩形上的點

  • 從那里沿向量方向畫一條線

  • 它相交的任何一側都是碰撞到第一側的一側

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM