[英]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.