I have a feeling I’m missing something obvious (or not so obvious,) but I’ve written the following code to find the point on a plane that runs through 0,0,0 perpendicular to the Y axis. A dummy prefab is instantiated at the point and an object instantiated at the same point and attached to the dummy.

```
void spawnBrick ( int brickNumber ) {
Ray ray = Camera.main.ScreenPointToRay( Input.mousePosition );
float distToPlane = 0.0f;
Plane myPlane = new Plane( Vector3.up, Vector3.zero );
myPlane.Raycast( ray, out distToPlane );
print( distToPlane );
Transform host = Instantiate( selectionHost, Camera.main.ScreenToWorldPoint( new Vector3( Input.mousePosition.x, Input.mousePosition.y, distToPlane ) ), Quaternion.identity ) as Transform;
Transform brick = Instantiate( filterBrickList[brickNumber] as Transform, host.position, Quaternion.identity ) as Transform;
host.SendMessage( "AddBrickToSelection", brick );
}
```

Basically, when I instantiate the host Transform, it is consistently 0.1745186 units above the plane.

I’m wondering if I’m misunderstanding the Plane constructor? The camera is an ortho camera-- near to far plane is only 192 units, the distance tends to be around 84 units (based on a debug report)-- plus, like I said, the vertical offset is consistent… so I’m pretty sure it isn’t a precision error.

What gives?? Can anyone see an issue in my code or recognize some undocumented caveat that would result in this offset?

Let me know if you need any clarifications.