我试图做一个简单的碰撞检测类足球游戏。 下面是代码:
int Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)
{
int dx = x2 - x1;
int dy = y2 - y1;
int radii = radius1 + radius2;
if ((dx*dy)+(dy*dy)< radii * radii)
{
return true;
}
else
{
return false;
}
}
问题是与代码返回true或false。 Visual Studio中说,它不能隐式转换BOOL为int,我理解,但我怎么能解决这个问题? 谢谢你的帮助。
定义你这样的功能:
bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)
现在,您可以返回true
或false
。 如果你保持int
,那么你需要回到一个整数值,如0
和1
,但是这并不表示功能的意图。
你也可以缩短你的代码位:
bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2)
{
int dx = x2 - x1;
int dy = y2 - y1;
int radii = radius1 + radius2;
return ((dx * dy) + (dy * dy) < radii * radii);
}
如果您需要返回真/假变量,您应该在第一行改成这样:
bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2) {
不要忘记,以解决您的算法。 ((DX *** ** DY)+(DY * DY)<半径*半径)应该是:((DX *** ** DX)+(DY * DY)<半径*半径)
当你认为:呼! 我固定的INT /布尔东西,,你会得到一堆误报。