// Update is called once per frame void Update( ) { var clampedx = Mathf.Clamp(Input.mousePosition.x, 0f, ( float )(cam.pixelWidth - 1)); var clampedy = Mathf.Clamp(Input.mousePosition.y, 0f, ( float )(cam.pixelHeight - 1)); RaycastHit hit; var ray = cam.ScreenPointToRay(new Vector3(clampedx, clampedy, 500f)); var result = Physics.Raycast(ray, out hit); if (result) { GridPos = world.ConvertWorldPosToGrid(hit.point); } if (Input.GetMouseButtonDown(0)) { var DidBuild = world.BuildObjectAtLocation(GridPos, state.CurrentBlueprint); if (DidBuild) { state.ProgressRound(state.CurrentBlueprint); } } }