所以我有一个用于弹跳框的矩形..我正在弹跳这个矩形的球,所以需要能够检查它是否从我的矩形的x轴或y轴反弹。最初我的代码遵循以下代码,通常可以检测两个碰撞的对象:
if (ballRect.Intersects(boxRect)
{
}
但是现在我想改变它,所以我可以根据矩形的轴执行不同的动作,所以我尝试了这个......
if (ballRect.Intersects(boxRect.X)
{
//perform action
}
if (ballRect.Intersects(boxRect.Y)
{
//perform different action
}
.X& .Y值显然可以用作视觉工作室自动将它们打开,而我在键入代码但是在放入它之后我得到以下错误:
的最佳重载方法匹配
'Microsoft.Xna.Framework.Rectangle.Intersects(Microsoft.Xna.Framework.Rectangle)' 有一些无效的论点。
为什么会这样?
编辑:
显然,我正在以不正确的方式使用原型,而是否有人有任何关于如何检测矩形是否与X轴或Y轴相交的提示?
感谢。
答案 0 :(得分:2)
原型是:
Rectangle.Intersects(Rectangle rect)
但你试图给它一个整数,它不是一个矩形。
答案 1 :(得分:1)
您需要为此创建一个方法。我通常为我需要扩展的每种类型创建一个扩展类。对于你的情况,它会是这样的:
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)进行哪种交叉,因此最好使用方法名称来表示。