How to get distance with raycast.distance

I have been using their [Scripting API] (Unity - Scripting API: RaycastHit.distance). But is makes the object move. This is the code

    public float moveForce = 1.0F;
    public float rotateTorque = 1.0F;
    public float hoverHeight = 4.0F;
    public float hoverForce = 5.0F;
    public float hoverDamp = 0.5F;
    public Rigidbody rb;
    void Start() {
        rb = GetComponent<Rigidbody>();
        rb.drag = 0.5F;
        rb.angularDrag = 0.5F;
    }
    void FixedUpdate() {
        rb.AddForce(Input.GetAxis("Vertical") * moveForce * transform.forward);
        rb.AddTorque(Input.GetAxis("Horizontal") * rotateTorque * Vector3.up);
        RaycastHit hit;
        Ray downRay = new Ray(transform.position, -Vector3.up);
        if (Physics.Raycast(downRay, out hit)) {
            float hoverError = hoverHeight - hit.distance;
            if (hoverError > 0) {
                float upwardSpeed = rb.velocity.y;
                float lift = hoverError * hoverForce - upwardSpeed * hoverDamp;
                rb.AddForce(lift * Vector3.up);
            }
        }
    }

And it makes the object hover. I got rid of everything using the Rigidbody and the move floats.

    void FixedUpdate()
    {
        RaycastHit hit;
        Ray downRay = new Ray(transform.position, -Vector3.up);
		Debug.Log(hit.distance);
    }

But and error says “Use of unassigned local variable ‘hit’”. Can someone please explain how I can get the hit distance.

You also got rid of your Raycast that populates the RaycastHit.

if(Physics.Raycast(downRay, out hit))
{
	// etc.
}