Why is this ray returning distance as zero?

I’m trying to find out the distance between the start of a raycast and the collider that the raycast hits. However the distance variable is only ever returning zero. I tested a few other of the variables and those don’t seem to be returning anything either. Point returned 0,0; transform returned null; etc. Here’s the code.`using UnityEngine;
using System.Collections;

public class Movement : MonoBehaviour {

public float speed;
float horizonal_input;

public Transform bottom_forward;
public Vector3 bottom_forward_position;

RaycastHit2D hit;

LayerMask ground = 1 << 8;
	

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
	bottom_forward_position = bottom_forward.position;
	horizonal_input = Input.GetAxisRaw ("Horizontal");
	transform.Translate (horizonal_input * speed * Time.deltaTime,0,0);

	if (Physics2D.Raycast(bottom_forward_position, Vector2.up, Mathf.Infinity, ground)){
			Debug.Log(hit.distance);
	}
}

}
`

Physics2D.Raycast() returns the RaycastHit2D. You are not assigning the return value to anything, and therefore hit will always be uninitialized. In addition, Physics2D.Raycast() always returns a RaycastHit, so it will never be false. To check for a hit, you can check the hit.collider. Here are two lines from the reference:

var hit: RaycastHit2D = Physics2D.Raycast(transform.position, -Vector2.up);

// If it hits something...
if (hit.collider != null) {