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