//Returns true if "point" is in a rectangle mad up of RectA to RectD. The line point is assumed to be on the same //plane as the rectangle. If the point is not on the plane, use ProjectPointOnPlane() first. public static bool IsPointIn2DRectangle(Vector3 point, Vector3 rectA, Vector3 rectC, Vector3 rectB, Vector3 rectD) { Vector3 vector; Vector3 linePoint; //get the center of the rectangle vector = rectC - rectA; float size = -(vector.magnitude / 2f); vector = ExtVector3.AddVectorLength(vector, size); Vector3 middle = rectA + vector; Vector3 xVector = rectB - rectA; float width = xVector.magnitude / 2f; Vector3 yVector = rectD - rectA; float height = yVector.magnitude / 2f; linePoint = ExtLine.ProjectPointOnLine(middle, xVector.normalized, point); vector = linePoint - point; float yDistance = vector.magnitude; linePoint = ExtLine.ProjectPointOnLine(middle, yVector.normalized, point); vector = linePoint - point; float xDistance = vector.magnitude; if ((xDistance <= width) && (yDistance <= height)) { return(true); } else { return(false); } }