我只想检查两个物体是否碰撞,在这种情况下它是一个圆形,第二个是一个正方形。我正在使用的代码完美运行,但它只检查正方形的右侧和向下/底部是否发生碰撞,请帮我纠正它,以便我能够检查所有侧面的碰撞。
问题是我只想检查正方形的所有边,如果它与圆相撞,但它只检查下面的函数的两个边:
bool Collision(int circleX, int circleY, int radius,
int squareX, int squareY, int width, int height)
{
double distance = 0;
//get circle of square
double center_square_x = (double)(squareX + squareX + width)/2;
double center_square_y = (double)(squareY + squareY + height)/2;
//check for whether circle fully located inside square
if (circleX >= squareX && circleX <= squareX + width
&& circleY >= squareY && circleY <= squareY + height)
return true;
distance = pow (circleX - center_square_x,2.0)
+ pow(circleY - center_square_y,2.0);
if( distance <= pow(radius, 2.0))
return true;
else
return false;
}
显示错误的图片:
当圆圈靠在左边并且仍然没有碰到正方形时:
现在,当它触摸正方形时,它会根据需要返回 true:
当圆圈靠在右边并且仍然没有碰到正方形时,它返回 false:
现在当它触及正方形时,它仍然返回错误,这是错误的:
当圆圈上升到正方形的底部并触摸时,它返回 true,这是正确的:
但是当圆圈下降到正方形的顶部并触摸时,它返回 false,这是错误的: