Hello Sanctuary seekers,
Let's talk about Audio and the way our AI sense the world around them through sound.
All AI in After Sanctuary are capable of hearing sounds coming from the environment whether it's a deer hearing a twig snap or an enemy bandit hearing the sound of gunfire.
Lets walk through how this happens.
Firstly, we have a sound manager.
Other classes can ask the sound manager to play a sound at a position in the world, at a certain volume through the audio source, give it a range in the world (how far away the AI has to be before it won't hear the sound), the game object which made the sound, a sound type, a bool which says should the AI react to this sound, is the sound played in a 3d space or 2d and the max range for audio listeners if it is 3d.
At some point, I'll put all this in it's own struct.
It's not quite the top of my to do list just yet.

SoundType is an enum and Noise is a struct.

We have a sound event which AI can hook into

When we want to make a noise in the game, we do something like this:

Which calls this method in the sound manager.

InternalPlay() instantiates a sound prefab, sets the parameters of the AudioSource that's attached to it, plays the clip then destroys the prefab once the clip has played.
Once i get time ill pool the prefab that is instantiated to save on garbage collection.
The noise sctuct gets passed into the Emit noise which just invokes the OnNoise(n) event that the AI are hooked into.
The AI hears the noise if it's in range and is supposed to react and carries out what ever behaviour is correct according to context.
0 comments