几何碰撞检测
Geometric collision detection
我在处理代码的特定区域时遇到问题。我正在尝试在按钮上创建一个矩形,当光标位于矩形内时,按钮将变为红色。
private bool rectangleContainsPoint(
Vector2 rectanglePos,
Texture2D rectangleImage,
Point targetPoint)
{
Rectangle rect = new Rectangle((int)rectanglePos.X, (int)rectanglePos.Y,
rectangleImage.Width, rectangleImage.Height);
if (targetPoint.X < rect.X)
{
return false;
}
else if (targetPoint.Y < rect.Y)
{
return false;
}
else if (targetPoint.X > rectangleImage.Width)
{
return false;
}
else if (targetPoint.Y > rectangleImage.Height)
{
return false;
}
else
return true;
}
看了十几遍,我不明白为什么这行不通。
您应该将宽度添加到 X,将高度添加到 Y
else if (targetPoint.X > rect.X + rectangleImage.Width )
{
return false;
}
else if (targetPoint.Y > rect.Y + rectangleImage.Height)
{
return false;
}
我在处理代码的特定区域时遇到问题。我正在尝试在按钮上创建一个矩形,当光标位于矩形内时,按钮将变为红色。
private bool rectangleContainsPoint(
Vector2 rectanglePos,
Texture2D rectangleImage,
Point targetPoint)
{
Rectangle rect = new Rectangle((int)rectanglePos.X, (int)rectanglePos.Y,
rectangleImage.Width, rectangleImage.Height);
if (targetPoint.X < rect.X)
{
return false;
}
else if (targetPoint.Y < rect.Y)
{
return false;
}
else if (targetPoint.X > rectangleImage.Width)
{
return false;
}
else if (targetPoint.Y > rectangleImage.Height)
{
return false;
}
else
return true;
}
看了十几遍,我不明白为什么这行不通。
您应该将宽度添加到 X,将高度添加到 Y
else if (targetPoint.X > rect.X + rectangleImage.Width )
{
return false;
}
else if (targetPoint.Y > rect.Y + rectangleImage.Height)
{
return false;
}