Привет попробуй создать Layer на terrain и в скрипте проверять на то, какого слоя касается коллайдер игрока
Как пример код установки звука:
[SerializeField] LayerMask sandLayer;
[SerializeField] LayerMask groundLayer;
[Header("FootStepsAudio")]
[SerializeField] AudioSource footstepsAudoSource;
[Space]
[SerializeField] AudioClip sandFootsteps;
[SerializeField] AudioClip graundFootsteps;
private CircleCollider2D footCollider;
void Start()
{
footCollider = GetComponent<CircleCollider2D>();
}
private void CheckLayer()
{
if (footCollider.IsTouchingLayers(sandLayer)) SetFootSteps(footstepsAudoSource, sandFootsteps);
else if (footCollider.IsTouchingLayers(groundLayer)) SetFootSteps(footstepsAudoSource, graundFootsteps);
}
private void SetFootSteps(AudioSource audioSource, AudioClip audioClip)
{
audioSource.clip = audioClip;
}