對於那些比我自己(數學)有更多經驗的人,我有一個XNA問題。XNA,C# - 檢查一個Vector2路徑是否跨越另一個Vector2路徑
背景:我有一個實現邊界類的遊戲,它只包含2個Vector2對象,一個起點和一個終點。目前的實現粗略地處理碰撞檢測,通過假設邊界總是垂直或水平,即如果start.x和end.x是相同的檢查,我不想通過x等。
理想情況下,我想實現的是一種接受兩個Vector2參數的方法。第一個是當前位置,第二個是請求的位置(我想將其移至不反對的位置)。該方法也會接受邊界對象。那麼該做的方法就是告訴我,如果我要跨越這一行動的邊界。這可能是一個布爾或理想的東西代表我可以移動多遠。
這個空白的方法可能比我能說得更好。
/// <summary>
/// Checks the move.
/// </summary>
/// <param name="current">The current.</param>
/// <param name="requested">The requested.</param>
/// <param name="boundry">The boundry.</param>
/// <returns></returns>
public bool CheckMove(Vector2 current, Vector2 requested, Boundry boundry)
{
//return a bool that indicated if the suggested move will cross the boundry.
return true;
}
這是「邊界」矩形,線條,線段還是其他? – 2010-12-21 22:39:09
嗨,約翰,邊界是一條線(ops!剛注意到我可怕的拼寫)。爲了說明問題,解決這個問題的簡單方法是將每個Vector2作爲邊界存儲在一個集合中,然後當對象正在移動時檢查所述集合以確保我們沒有在該集合中找到Vector2。然而,這對於級別開發來說是一個真正的痛苦,而且在舊的處理時間上相當昂貴。因此,由於幾乎每一個邊界都是一條直線,所以只存儲起始和結束vector2對象並且在飛行中以數學方式計算它是否已被擊中/穿過是有意義的。希望這有助於 – Nick 2010-12-22 08:23:05