繁体   English   中英

矩形重载方法问题

[英]Rectangle overloaded method issue

因此,我有一个用于弹跳框的矩形。我要弹跳该矩形的球,因此需要能够检查它是否从矩形的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.Rectangle.Intersects(Microsoft.Xna.Framework.Rectangle)'具有一些无效的参数。

为什么是这样?

编辑:

显然,我以错误的方式使用了原型,相反,有人对我如何检测矩形是否与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)进行哪种类型的交点,因此最好使用这样的方法名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM