I'm learning a course on unity and when we started learning about taking mouse input the following code is used.

Vector3 pos = Input.mousePosition;
pos.z = -Camera.main.transform.position.z;
pos = Camera.main.ScreenToWorldPoint(pos);
gameObject.transform.position = pos;

My problem is in the second line. Shouldn't our Z be 0 instead of minus wherever our camera is? Because the plane where we our designing our game is in z = 0, right?

Please go slow on me I'm still new to unity. Thank you!


1 Answer 1


The z-coordinate given to ScreenToWorldPoint is the distance from the camera plane. If you set z to 0, the position returned will be in the camera's plane.

Is the ground plane at (0,0,0)? And the camera is at (0,0,-z) and pointing along the +z direction?

  • \$\begingroup\$ Aha, so it is -z relative to the camera? \$\endgroup\$ Mar 30, 2020 at 2:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .