Input.mousePosition to ScreenToWorldPoint

Hey I am facing some problems with ScreenToWorldPoint casting, if you could help me.

Vector3 mouspos = new Vector3 (Input.mousePosition.x,  Input.mousePosition.z, Input.mousePosition.y);
			mouspos = Camera.main.ScreenToWorldPoint(mouspos);
			Instantiate (obj, mouspos, Quaternion.identity);

So basically what I want to do, is to use the mouseposition and to instantiate an object only on x,z axis, but it’s not working.

If I am just using

Vector3 mouspos =Input.mousepoint;
mous.pos.z = 5.0f;
mouspos = Camera.main.ScreenToWorldPoint(mouspos);
Instantiate (obj, mouspos, Quaternion.identity);

With this snippet of code, it will work, but this will place my object on x and y axis.

Would really need a little bit of help :slight_smile:

Try using the following, it creates a ray in world space that lies on the pixel the pointer is on and intersects it with a plane that lies on y=0.

Plane plane=new Plane(Vector3.up, Vector3.zero);
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
float distance;
if(plane.Raycast(ray, out distance)) {
    Vector3 point=ray.GetPoint(distance);
    Instantiate (obj, point, Quaternion.identity);
}

edit: good catch!