void MoveHeldObject() { Vector3 targetPosition = Camera.main.transform.position + Camera.main.transform.forward * maxHoldDistance; RaycastHit hitInfo; float minHoldDistance = 1f; if (Physics.Linecast(Camera.main.transform.position, targetPosition, out hitInfo, LayerMask.GetMask("Ground", "NoClip", "Default"))) { float adjustedDistance = Mathf.Clamp(hitInfo.distance, minHoldDistance, maxHoldDistance); targetPosition = Camera.main.transform.position + Camera.main.transform.forward * adjustedDistance; } heldObject.MoveTo(targetPosition); }