I need help about Raycast.

I have a straight road and I instantiate a random cars on it.Every car has different speed, I attached a raycast front of them and I want if that ray touch any car in front car will brake(take speed of the car in front). But my code makes every car`s speed equal.How can I do this.

Here is my code

public int speed;
RaycastHit hit;

void Start()
{
    speed = Random.Range(25, 45);       
}

// Update is called once per frame
public void Update()
{
    int layerMask = 1 << 8;

   if( Physics.Raycast(transform.position + new Vector3(0f, 0.5f, 0f), transform.forward, out hit, 10f,layerMask))
    {

        Debug.DrawRay(transform.position + new Vector3(0f, 0.5f, 0f), transform.TransformDirection(Vector3.forward) * hit.distance, Color.red);
        Debug.Log("speed" + hit.transform.GetComponent<EnemyCarMove>().speed);
        speed = hit.transform.GetComponent<EnemyCarMove>().speed;               
          }
    transform.Translate(0, 0, 1 * speed * Time.deltaTime,Space.World);       
}

As Salamun Aleykum. Kodu yanlış yazmişsın

Bu satırdaki kodu tersıne çeviricen Aynen böyle

“hit” öne al ve “= speed” en sona yaz Tersine yani. Sorun çözüldüyse Accept yap cevabima ki onaylansin

hit.transform.GetComponent<EnemyCarMove>().speed = speed;

Sorun olursa cekinme sor

2 arac cakisinca calisiyor ancak arabalar arka arkaya dizilmeye baslayinca buglaniyor bir anda hepsi hizlaniyor.