Table of Contents
-
Lessons
While the Ambient_Windmill Event has been added to the Scene as an AkAmbient component, one last detail remains to be fixed - the distance attenuation of the Windmill. From the player's starting position, the Windmill sound is completely inaudible due to the listener probe's game object (Player) being outside the maximum attenuation radius of the Ambient_Windmill Blend Container.
For more information about the Wwise Unity Integration listener (AkAudioListener), visit Lesson 9. |
As such, let's increase the Max Distance of the Ambient_Windmill's Attenuation ShareSet. But, how much should you increase it? And how do you make sure the player is able to hear it from the starting position? One solution is using Attenuation Spheres.
When enabled in the AkAmbient component, the Attenuation Sphere will display a sphere with the radius from the center of the game object to the maximum attenuation distance set in Wwise. With this sphere you get a visual representation of the Max Distance set in the Attenuation Editor, so you can evaluate the distance in comparison with in-game objects.
In the following steps, we'll enable and configure Attenuation Spheres in the Wwise Adventure Game.
-
In the Unity menu, go to Audiokinetic > Certification > 301 > Lesson 2 and select Attenuation Spheres.
-
In the Hierarchy, go to L2_2B - Village Environment Scene, expand Wwise, and select the Windmill game object.
When creating a new Wwise project, the Max Distance values in the Attenuation ShareSet are not included as metadata in the SoundBanks. In WAG it is, but as a best practice, let's make sure before proceeding.
-
In Wwise, select Project > Project Settings.
-
Select the SoundBanks tab.
-
On the SoundBanks tab, ensure that Max Attenuation is enabled.
The Wwise Unity Integration will now be able to fetch all Max Distances from all Attenuation ShareSets and use it to determine the size of the Attenuation Spheres.
By calling the AkWwiseProjectInfo.GetData().GetEventMaxAttenuation() function, you can fetch the Max Distance for your own custom script.
-
In the Project Settings, click OK.
-
Search for 'Windmill' and select the Ambient_Windmill Blend Container.
-
In the Attenuation section of the Positioning tab, click Edit.
What should you set it to? One approach would be to increase it while repeatedly switching between Unity and Wwise to see the result. A more precise approach would be to set a temporary value, then in Unity adjust the size of a Sphere Collider to encompass the desired Attenuation area, then return to Wwise and update the Max Distance value to match the radius of the Sphere Collider.
-
In the Attenuation Editor's Max distance field, set a value of 35.
-
In the Wwise Picker, click Generate SoundBanks.
-
Use the Hand tool ('Q') to position the Scene view looking at both the Windmill and Main Camera.
-
In the Unity Inspector, go to the Sphere Collider and set the Radius to 35.
In the Scene view, you will now see a green line at the edge of the Attenuation Sphere. As long as the game object is not scaled (increased or decreased in size), the Radius of a Sphere Collider translates directly to the Attenuation's Max distance property.
-
In the attached AkAmbient component, set the Show Attenuation Sphere property to Current_Event_Only.
After you select Current_Event_Only, a red sphere that represents the Distance Attenuation's Max Distance value becomes visible in the scene.
Notice that the sphere does not reach the player's starting position where the Main Camera is located, and so the Windmill is completely inaudible.
By increasing the Sphere Collider Radius, you will be able to visualize the distance required by the Attenuation to reach the Player.
-
Click and hold the Radius property and drag it to the right until the green Sphere Trigger is reaching the Player.
Once you've found a suitable value, you can use that value in the Attenuation ShareSet's Max distance field.
-
Switch to Wwise and in the Attenuation Editor, set the Max distance to the new Sphere Collider Radius's value (rounded up).
As we are only using the Sphere Collider to get a temporary measurement, let's set it back to 1.
-
In the Unity Inspector, locate the Sphere Collider and set the Radius property to 1.
Lastly, you need to fetch the most recent changes from the SoundBanks.
-
In the Wwise Picker, click Generate SoundBanks.
Generating the SoundBank from within the Unity's Wwise Picker will also update the Unity project with the latest information from the Wwise Project.
Notice that the Attenuation Sphere has increased in size and now covers the Player's starting position.
As such, you are able to evaluate exactly how far the attenuation would reach in Unity.