我在這裏確實很難弄清楚我的程序中的錯誤。矩形邏輯流程到N長方形碰撞檢測
我的代碼只適用於2
矩形,但如果我增加矩形的數量,它根本不起作用。
我的程序流程是這樣的:
pseudo code
for (i = 0 to N_of_rectangles - 1)
{
Rectangle& r1 = rect[i];
if (r1.is_grab_by_mouse())
{
for (j = 0 to N_of_rectanges - 1)
{
if (i == j)
{
skip_this_loop //skip for any self-checking
}
Rectangle& r2 = rect[j];
if (not Rectangle.collide(r1, r2))
{
if (r1.restricken_move()) break; //restricken move will be true if
//*this rect will collide to !*this
if (r1.movement == HORIZONTAL)
r1.move_x_along_with_mouse()
else //VERTICAL
r1.move_y_along_with_mouse()
}
else
{
r1.resolve_collision()
}
}
}
}
我曾嘗試所有的我在谷歌搜索算法的矩形碰撞檢測和防雷但似乎我有一個logic flaw
這裏。
(PS。我REC-碰撞檢測是不旋轉的矩形)
是什麼'r1.move()'做什麼?對於沒有碰撞的矩形,它將每個tick執行N_of_rectangles-1次。這可以嗎? – Kevin 2013-04-29 12:21:48
它確實只移動x或y而不是兩者。 – mr5 2013-04-29 12:28:46