我正在尝试为足球比赛制作一个简单的碰撞检测课程。这是代码:
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,我理解这一点,但我该如何解决呢? 谢谢你的帮助。
答案 0 :(得分:3)
如果您需要返回true / false变量,则应将第一行更改为:
bool Collision(int x1, int y1, int radius1, int x2, int y2, int radius2) {
答案 1 :(得分:2)
像这样定义你的功能:
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);
}
答案 2 :(得分:1)
不要忘记修复算法。 ((dx *** dy **)+(dy * dy)&lt; radiusii * radii) 应该: ((dx *** dx **)+(dy * dy)&lt; radiusii * radii)
就在你想的时候:哇!我修复了int / bool的事情,你得到了一堆误报。