the script does not work!

Good evening to all, because the script for FPS, which simulates the sound of footsteps on different surfaces, does not work!

public var footAudioSource : AudioSource;
public var woodSteps : AudioClip[ ];
public var metalSteps : AudioClip[ ];
public var concreteSteps : AudioClip[ ];
public var sandSteps : AudioClip[ ];
public var waterSteps : AudioClip[ ];
public var grassSteps : AudioClip[ ];
private var cc : CharacterController;
private var t : Transform;
public var hitLayer : LayerMask;
private var cTag : String;
	
function Start()
{
cc = GetComponent(CharacterController);
t = transform;
}
function OnFootStrike () 
{
if(Time.time < 0.5) return;
if(cc != null)
{
volume = Mathf.Clamp01(0.1 + cc.velocity.magnitude * 0.3);
}
else
{
volume = 1;
}
footAudioSource.PlayOneShot(GetAudio(), volume);
}
function GetAudio() : AudioClip
{
var hit : RaycastHit;
if(Physics.Raycast(t.position + new Vector3(0, 0.5, 0), -Vector3.up, hit, Mathf.Infinity, hitLayer))
{
cTag = hit.collider.tag.ToLower();
}
if(cTag == "Wood")
{
return woodSteps[Random.Range(0, woodSteps.length)];
}
else if(cTag == "Metal")
{
return metalSteps[Random.Range(0, metalSteps.length)];
}
else if(cTag == "Floor")
{
volume = 0.8;
return concreteSteps[Random.Range(0, concreteSteps.length)];
}
else if(cTag == "Sand")
{
volume = 1.0;
return sandSteps[Random.Range(0, sandSteps.length)];
}
else if(cTag == "Water")
{
volume = 1.0;
return waterSteps[Random.Range(0, waterSteps.length)];
}
else if(cTag == "Grass")
{
volume = 1.0;
return grassSteps[Random.Range(0, grassSteps.length)];
}
}

Thanks in advance.

Did you assign the appropriate materials to the surfaces in your scene?

Yes, of course I tagged all surfaces.
But maybe I missed something.

Try with print(), to see what tags it returns (if any),

cTag = hit.collider.tag.ToLower(); 
print ("we hit:"+cTag);

Assets/Scripts/AudioManager.js(31,10): BCW0023: WARNING: This method could return default value implicitly.

ToLower() makes every character lowercase so it will never equal a string that starts with an uppercase letter. :slight_smile: Curious why you’re even bothering making it lowercase in the first place?