public static Vector3 GetRectPointLocal(this RectTransform inCanvasRect, RectPositions position) { Vector3 localPos = Vector3.zero; switch (position) { case RectPositions.TopLeft: localPos = new Vector3(inCanvasRect.rect.xMin, inCanvasRect.rect.yMax, inCanvasRect.localPosition.z); break; case RectPositions.TopCenter: localPos = new Vector3(inCanvasRect.rect.center.x, inCanvasRect.rect.yMax, inCanvasRect.localPosition.z); break; case RectPositions.TopRight: localPos = new Vector3(inCanvasRect.rect.xMax, inCanvasRect.rect.yMax, inCanvasRect.localPosition.z); break; case RectPositions.MiddleLeft: localPos = new Vector3(inCanvasRect.rect.xMin, inCanvasRect.rect.center.y, inCanvasRect.localPosition.z); break; case RectPositions.MiddleCenter: localPos = new Vector3(inCanvasRect.rect.center.x, inCanvasRect.rect.center.y, inCanvasRect.localPosition.z); break; case RectPositions.MiddleRight: localPos = new Vector3(inCanvasRect.rect.xMax, inCanvasRect.rect.center.y, inCanvasRect.localPosition.z); break; case RectPositions.BottomLeft: localPos = new Vector3(inCanvasRect.rect.xMin, inCanvasRect.rect.yMin, inCanvasRect.localPosition.z); break; case RectPositions.BottomCenter: localPos = new Vector3(inCanvasRect.rect.center.x, inCanvasRect.rect.yMin, inCanvasRect.localPosition.z); break; case RectPositions.BottomRight: localPos = new Vector3(inCanvasRect.rect.xMax, inCanvasRect.rect.yMin, inCanvasRect.localPosition.z); break; } return(localPos); }
public static Vector3 GetRectPointWorld(this RectTransform inCanvasRect, RectPositions position) { Vector3 localPos; localPos = inCanvasRect.GetRectPointLocal(position); Vector3 worldPos = inCanvasRect.TransformPoint(localPos); return(worldPos); }
public static Vector3 CanvasToCameraWorldPoint(this Camera cam, Canvas canvas, RectTransform inCanvasRect, RectPositions position, float depth) { Vector3 worldPos = inCanvasRect.GetRectPointWorld(position); Vector3 output = cam.CanvasToCameraWorldPoint(canvas, worldPos, depth); return(output); }