Other methods/best practises for tagging objects for footstep surface detection

So I’ve been detecting footsteps in what I think is a standard way:

  • Send a small raycast down from the character position to detect the collider and check the tag of the object
  • Objects are tagged with appropriate labels like “wood” or “concrete” or “dirt”

However I’m running into three issues. Firstly there are other colliders in the game world. For instance if I have a trigger collider for activating a bit of music or dialogue - suddenly the footstep code will detect that instead of the floor - unless I remember to have that object raised a bit off the ground.

The second issue was similar in that I couldn’t use a giant trigger collider zone around a whole room. This was unfortunate as I would have liked to have put a giant trigger collider around areas to say “use this reverb snapshot here” and “ok we’re outside, no reverb at all here.” If I did that then no raycast to get colliders would work (unless I changed the raycast to detect all objects it shot through - maybe that’s the solution but then I’d have to work out how to handle getting back multiple bits of info back)

The third issue is that game objects might need to use the tagging system for other aspects of the game - and you can only select one entry as the tag. For instance I just did a photography game where we also used the tagging system to detect what the player took a photo of. The workaround for this I created two child objects with different trigger colliders - one for footsteps detection and one for photo detection - and I often had to position those trigger colliders so that the game functioned as intended.

Is there something I should be using other than the tagging system on objects? Or is there a more clever way to handle the above functions that I’m overlooking?

Thanks heaps in advance!