Первое, что сразу непонятно - это зачем производить 6 совершенно одинаковый проверок?
Код
if(dirt_colider.collider.material.name = "Wood" ) {
if(Input.GetKeyDown(KeyCode.W)){
audio.clip = dirt;
audio.volume=0.2f;
audio.loop=true;
audio.bypassEffects=true;
audio.Play();
} else if(Input.GetKeyUp(KeyCode.W)){
audio.Stop();
}
}
Плюс, как мне кажется, изначально неверная логика подхода к действию.
Нужно проверять нажатие клавиши для того, что бы идти и уже если идёшь, думать о звуке.
А для того, что бы найти проблему, используйте вывод логов.
Для начала можно просто Код
Debug.Log(dirt_colider.collider.material.name);
Выведет то, что вы ожидали, переходите дальше:
Код
f(dirt_colider.collider.material.name = "Wood" ) {
Debug.Log("Ура! Деревяшка");
}
А по совести мне кажется что проблема конкретно приведённого вами куска кода в отсутствии начально открывающей фигурной скобки...