Foot steps without trace

Is there a way to do different foot steps on grass, in water or on floors without a constant trace downwards to detect the floor?

You could change a “current floor” variable every time the player walks into a trigger. i don’t see why you wouldn’t trace though; simple line traces aren’t particularly expensive if that’s what you’re worried about.

No Need to Do a Constant trace, If your Character has a mesh and Animation you can use AnimNotify and do trace only when the character steps his/her foot down to the floor.
If your Character is just Arms like in First Person Games then you can create a new component and measure Distance from last Step to next Step on tick. If the distance Exceeds the current length of characters walk cycle then just trace once and do the footstep thingy.

Thanks very much for the tips!
ill go ahead and do a line trace with anim notify.
I just don’t like having things fire off constantly