0
我有這個公式簡單的圓形碰撞檢測:圈碰撞式
private bool CircleCollision(Rectangle Circle1, Rectangle Circle2)
{
int X1 = Circle1.Left;
int Y1 = Circle1.Top;
int X2 = Circle2.Left;
int Y2 = Circle2.Top;
int R1 = Circle1.Width/2;
int R2 = Circle2.Width/2;
int Radius = R1 + R2;
int dX = X2 - X1;
int dY = Y2 - Y1;
if (Math.Sqrt((dX * dX) + (dY * dY)) <= Math.Sqrt(Radius * Radius))
return true;
else
return false;
}
,但它只是暴露檢測只要兩個圓具有相同的半徑。我究竟做錯了什麼?
解決
int X1 = Circle1.Left + (Circle1.Width/2);
int Y1 = Circle1.Top + (Circle1.Height/2);
int X2 = Circle2.Left + (Circle2.Width/2);
int Y2 = Circle2.Top + (Circle2.Height/2);
嘿!對不起,只是輸入錯誤。 – MahanGM 2011-12-15 18:22:11
您可以放棄對`Math.Sqrt`的調用 - 只需測試是否(dX * dX)+(dY * dY)<= Radius * Radius`。 – 2011-12-15 18:22:57