所以我有一个矩形,用来做一个弹跳框。。我正在反弹这个矩形的球,所以需要能够检查它是否从我的矩形的x轴或y轴上反弹。最初,我有以下代码,通常可以检测两个物体碰撞:
if (ballRect.Intersects(boxRect)
{
}
但现在我想改变它,这样我就可以根据矩形的轴执行不同的操作,所以我尝试了这个。。。
if (ballRect.Intersects(boxRect.X)
{
//perform action
}
if (ballRect.Intersects(boxRect.Y)
{
//perform different action
}
.X&Y值显然可以用作visual studio在我键入代码时自动显示的值,但在输入它们之后,我会得到以下错误:
的最佳重载方法匹配
'Microsoft.Xna.Framework.Regtang.Intersects(Microsoft.Xna.Framework.Rigtangle)'有一些无效的参数。
为什么会这样?
编辑:
很明显,我使用原型的方式不正确,相反,有人知道我该如何检测矩形是否与X轴或Y轴相交吗?
谢谢。
原型是:
Rectangle.Intersects(Rectangle rect)
但你试图给它一个整数,而不是矩形。
您需要为此创建一个方法。我通常为需要扩展的每种类型创建一个扩展类。对你来说,它会是这样的:
public static class RectangleExtensions
{
public static bool IntersectsOnX(this Rectangle rect, int xPoint)
{
return rect.Left <= xPoint && xPoint <= rect.Right;
}
public static bool IntersectsOnY(this Rectangle rect, int yPoint)
{
return rect.Top <= yPoint && yPoint <= rect.Bottom;
}
}
然后,您将能够调用每个实例上的方法:ballRect.IntersectsOnX(boxRect.X)
。
请注意,你需要区分你需要对一个点(X或Y)进行什么样的交集,所以最好有这样的方法名称。