- Home /
Can't get proper local point of rectangle for mouse click
I'm trying to get the point a RectTransform was clicked on but for some reason the coordinates I'm getting are not coming out correctly. This is my code:
void Update () {
if (Input.GetMouseButtonDown(0))
{
if (RectTransformUtility.RectangleContainsScreenPoint(rect, Input.mousePosition))
{
Vector2 localPoint;
RectTransformUtility.ScreenPointToLocalPointInRectangle(rect, Input.mousePosition, uiCamera, out localPoint);
Debug.Log("Video panel " + transform.name + " clicked at " + localPoint);
}
}
}
The actual coordinates I'm getting are negative for X, and very large values (4 digits) for Y despite the rect just being 640x480 with a 0.5 scale. The RectangleContainsScreenPoint
call does work correctly however. Is there something else I need to do to either mousePosition
or localPoint
? Or some property of the RectTransform I have to account for?
Answer by afuhrtrumpet · Dec 10, 2018 at 10:12 PM
Had to set camera to null to get this to work, because the item was on a canvas with screen space overlay.
Answer by hexagonius · Dec 10, 2018 at 07:14 PM
the only reason I can think of is passing the wrong camera.
https://docs.unity3d.com/ScriptReference/RectTransformUtility.ScreenPointToLocalPointInRectangle.html
It's the right camera, I'm pretty sure of this. Though I do have two in the scene, but one of them is only covering a quarter of the screen on the opposite side.
Actually the raw image is on a canvas that is just placed in front of the camera, but the actual camera isn't pointing to that in the scene. $$anonymous$$aybe that's it?
Your answer
Follow this Question
Related Questions
How to track a world object in a Screen Space - Camera Canvas 1 Answer
Raycast object flies towards mouse on screen, i need it on floor 1 Answer
Why canvas set to Screen Space - Overlay doesn't cover entire screen 0 Answers
GetLocalCorners not working correctly 1 Answer
RectTransform rounding? 0 Answers