public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if ((/*snip*/) { return true; }
}
}
问问题
112 次
5 回答
5
在 else 情况下您未能返回值:
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if ((/*snip*/) { return true; }
else{return false;}
}
else
{
return false;
}
}
于 2012-11-28T21:15:23.643 回答
3
我建议执行以下操作:
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
bool result = false;
if (/*snip*/)
{
if (/*snip*/) { result = true; }
else if (/*snip*/) { result = true; }
else if (/*snip*/) { result =true; }
}
return result;
}
使用单个 return 语句可以更轻松地跟踪正在发生的事情,并确保它在任何条件语句之外并在声明时进行初始化,以确保您始终返回一个值。
于 2012-11-28T21:18:20.997 回答
3
以下:
if (A)
{
if (B) { return true; }
else if (C) { return true; }
else if (D) { return true; }
}
相当于:
return A && (B || C || D);
(假设之前没有返回任何值的任何情况都意味着返回 false。)
于 2012-11-28T21:25:44.710 回答
2
您并不总是返回一个值:
if (playerPositionM.Y <= groundPositionM.Y + groundM.Height && playerPositionM.Y > groundPositionM.Y)
{
if (playerPositionM.X < groundPositionM.X && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X))
{
return true;
}
else if (playerPositionM.X + playerM.Width > groundPositionM.X + groundM.Width && (playerPositionM.X < groundPositionM.X + groundM.Width && playerPositionM.X > groundPositionM.X))
{
return true;
}
else if ((playerPositionM.X > groundPositionM.X && playerPositionM.X < groundPositionM.X + groundM.Width) && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X))
{
return true;
}
else
{
// You need to return a value here:
}
}
else
{
// You need to return a value here:
}
etc!
于 2012-11-28T21:16:53.287 回答
2
如果没有else
作为其余条件的全部内容,您需要添加return false;
以下逻辑检查。
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
}
return false;
}
于 2012-11-28T21:14:45.110 回答