Player shoots only the ground

I made a 3d game , my gun it’s attached to the main camera and when I try to shoot anything like cubs or other objects it appears just ground in console.
What can i do to make it shoot other objects

![1]

using UnityEngine;

public class Gun : MonoBehaviour
{
    public float damage = 10f;
    public float range = 100f;
    public Camera fpsCam;


    // Start is called before the first frame update
 

    // Update is called once per frame
    void Update()

    {
        Vector3 forward = transform.TransformDirection(Vector3.forward) * 10;
        Debug.DrawRay(transform.position, forward, Color.green);
        if (Input.GetButtonDown("Fire1"))
        {
            Shoot();

        }
        
    }
    void Shoot()
    {
        RaycastHit hit;
       if( Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            Debug.Log(hit.transform.name);
        }
    }
    void OnCollisionEnter(Collision collision)
    {
        Debug.DrawRay(collision.contacts[0].point, collision.contacts[0].normal, Color.green, 2, false);
    }
}

on the picture you show i think you just missed the cube!?