How to create realistic sounds when a ball rolls over surface materials with sounds (puddle, grass etc)

(Unreal 5.4, with blueprints)

I’ve made a level that has a few materials which have their own sounds such as dirt, grass, a puddle etc. They all work fine when my character interacts with them. And whenever I drop an object, a boucing ball, cube etc, they all have their own sounds but also trigger the sound of the surface.
So, for example, you can hear multiple beachball boucing sounds when dropping it from above onto a puddle, and you can also hear the sound of the puddle. But no matter what I’ve tried, I cant get the sound of the material (whether dirt or puddle etc) to repeat more than once when an object rolls over it.
Bouncing, no problem, but rolling, the object will only trigger the materials sound once.
Obviously, that doesn’t sound natural. In real life, if you were to roll a ball along a concrete floor covered with puddles, the ball would randomly create splash sounds, until it passed all of the puddles or came to a halt.
I just can’t figure out how to fix this. Is this a problem with my material sounds or the sphere and other objects, or all of the above? Its possibly something so simple but I’ve watched loads of Youtube tutorials, which almost have solutions, but they’re not actually about my exact problem.
So, after hours of trying I’m hoping someone here will know, or lead me to a decent tutorial.

Cheers.

It sounds like your issue is you are only getting one execution pulse where you want it at every case. I have ran into this before.

I’m assuming you are using an on component begin overlap node(s) in this situation. Instead try this. Component is overlap or actor is overlap boolean connected to something with fast fire like an Event Tick.

I hope this can help you.

1 Like

Overlaps aren’t good for this mechanic. Object could be overlapping multiple actors. You want a dominant rolling sound that loops until the surface type changes.

You need to define when the ball is rolling vs in air. Basically floor checks. This will give you two distinct states to work with. Grounded and In Air. Use the floor check traces to get the current surface type. Only set the floor surface type when the state is grounded. Clear it when the state changes to in air.

When the state changes to “In Air” you stop the rolling sound.

I’d add an audio component to the actors root and play the rolling looped audio on it. For bounces you can add another audio component for those, or spawn sound at location.

1 Like

Thanks for both of these repiles. I’ll give both a try and then post back my results.

Cheers.