It wont play my sounds

I tried making a code that changes the sounds of footsteps based on the tag of the object u are colliding with. Although when im walking nothing is being played this is my code

<using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(CharacterController))]

public class SC_FPSController : MonoBehaviour
{
public float walkingSpeed = 7.5f;
public float runningSpeed = 11.5f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
public Camera playerCamera;
public float lookSpeed = 2.0f;
public float lookXLimit = 45.0f;
public AudioClip grassSound;
public AudioClip cabinSound;

CharacterController characterController;
Vector3 moveDirection = Vector3.zero;
float rotationX = 0;

[HideInInspector]
public bool canMove = true;

void Start()
{
    characterController = GetComponent<CharacterController>();

    // Lock cursor
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.visible = false;
}

void Update()
{
    Vector3 forward = transform.TransformDirection(Vector3.forward);
    Vector3 right = transform.TransformDirection(Vector3.right);

    bool isRunning = Input.GetKey(KeyCode.LeftShift);
    float curSpeedX = canMove ? (isRunning ? runningSpeed : walkingSpeed) * Input.GetAxis("Vertical") : 0;
    float curSpeedY = canMove ? (isRunning ? runningSpeed : walkingSpeed) * Input.GetAxis("Horizontal") : 0;

    float movementDirectionY = moveDirection.y;
    moveDirection = (forward * curSpeedX) + (right * curSpeedY);

    if (Input.GetButton("Jump") && canMove && characterController.isGrounded)
    {
        moveDirection.y = jumpSpeed;
    }
    else
    {
        moveDirection.y = movementDirectionY;
    }

    if (!characterController.isGrounded)
    {
        moveDirection.y -= gravity * Time.deltaTime;
    }>

    characterController.Move(moveDirection * Time.deltaTime);

    // Check if walking on grass or cabin
    RaycastHit hit;
    if (Physics.Raycast(transform.position, Vector3.down, out hit, 1.0f))
    {
        if (hit.collider.CompareTag("grass"))
        {
            // Play grass sound
            PlaySound(grassSound);
        }
        else if (hit.collider.CompareTag("cabin"))
        {
            // Play cabin sound
            PlaySound(cabinSound);
        }
    }

    if (canMove)
    {
        rotationX += -Input.GetAxis("Mouse Y") * lookSpeed;
        rotationX = Mathf.Clamp(rotationX, -lookXLimit, lookXLimit);
        playerCamera.transform.localRotation = Quaternion.Euler(rotationX, 0, 0);
        transform.rotation *= Quaternion.Euler(0, Input.GetAxis("Mouse X") * lookSpeed, 0);
    }
}

void PlaySound(AudioClip clip)
{
    // Play the sound
    if (clip != null)
    {
        AudioSource.PlayClipAtPoint(clip, transform.position);
    }
}

}

A raycast distance of 1 meter seems quite short. Try increasing it. If that doesn’t help then insert some Debug.Log statements in the script so you then can see what is or isn’t functioning.

But when you do get it working it still won’t work properly because it’s trying to play a sound every frame. You’ll need insert a timer in the code so that it only plays a sound every second or so, and only when the player is actually moving.