Bird
Raised Fist0
Unityframework~20 mins

3D spatial audio in Unity - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
3D Spatial Audio Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Unity 3D spatial audio code?

Consider this Unity C# script attached to a GameObject with an AudioSource component. What will be the audible effect when the player moves away from the source?

Unity
using UnityEngine;

public class SpatialAudioTest : MonoBehaviour {
    void Start() {
        AudioSource audio = GetComponent<AudioSource>();
        audio.spatialBlend = 1.0f; // fully 3D
        audio.minDistance = 1f;
        audio.maxDistance = 10f;
        audio.Play();
    }
}
AThe sound stops immediately when the player moves beyond 1 unit.
BThe sound volume remains constant regardless of player distance.
CThe sound volume increases as the player moves away from the source.
DThe sound volume decreases smoothly as the player moves from 1 to 10 units away, then becomes inaudible beyond 10 units.
Attempts:
2 left
💡 Hint

Think about what minDistance and maxDistance control in 3D audio.

🧠 Conceptual
intermediate
1:30remaining
Which Unity AudioSource property controls how sound fades with distance?

In Unity's 3D audio system, which property determines how quickly the sound volume decreases as the listener moves away from the source?

ArolloffMode
BdopplerLevel
CspatialBlend
DminDistance
Attempts:
2 left
💡 Hint

It controls the shape of the volume drop-off curve.

🔧 Debug
advanced
2:30remaining
Why does this spatial audio script produce no sound?

Examine the following Unity C# script. The AudioSource component is attached and has an audio clip. Why does no sound play?

Unity
using UnityEngine;

public class AudioDebug : MonoBehaviour {
    void Start() {
        AudioSource audio = GetComponent<AudioSource>();
        audio.spatialBlend = 1.0f;
        audio.minDistance = 5f;
        audio.maxDistance = 15f;
        audio.Play();
    }

    void Update() {
        transform.position = new Vector3(100, 0, 0);
    }
}
AThe spatialBlend value is invalid and prevents playback.
BThe AudioSource is too far from the listener, beyond maxDistance, so sound is inaudible.
CThe audio clip is not assigned, so no sound plays.
DThe AudioSource component is missing, causing a null reference error.
Attempts:
2 left
💡 Hint

Check the position of the audio source relative to the listener.

📝 Syntax
advanced
2:30remaining
Which option correctly sets 3D spatial audio with a custom rolloff curve?

Choose the correct Unity C# code snippet that sets an AudioSource to fully 3D and applies a custom rolloff curve.

A
audio.spatialBlend = 1.0f;
audio.rolloffMode = AudioRolloffMode.Custom;
audio.SetCustomCurve(AudioSourceCurveType.CustomRolloff, AnimationCurve.Linear(0,1,1,0));
B
audio.spatialBlend = 1.0f;
audio.rolloffMode = AudioRolloffMode.Custom;
audio.SetCustomCurve(AudioSourceCurveType.CustomRolloff, AnimationCurve.Linear(0,0,1,1));
C
audio.spatialBlend = 1.0f;
audio.rolloffMode = AudioRolloffMode.Logarithmic;
audio.SetCustomCurve(AudioSourceCurveType.CustomRolloff, AnimationCurve.Linear(0,1,1,0));
D
audio.spatialBlend = 0.0f;
audio.rolloffMode = AudioRolloffMode.Custom;
audio.SetCustomCurve(AudioSourceCurveType.CustomRolloff, AnimationCurve.Linear(0,1,1,0));
Attempts:
2 left
💡 Hint

Remember that spatialBlend must be 1 for full 3D and the curve must go from volume 1 to 0.

🚀 Application
expert
3:00remaining
How to implement Doppler effect with 3D spatial audio in Unity?

You want to simulate the Doppler effect on a moving audio source in Unity. Which code snippet correctly enables and configures this effect?

A
audio.dopplerLevel = 1.0f;
audio.spatialBlend = 0.0f;
// Move source with velocity set on Rigidbody component
B
audio.dopplerLevel = 0.0f;
audio.spatialBlend = 1.0f;
// Move source with velocity set on Rigidbody component
C
audio.dopplerLevel = 1.0f;
audio.spatialBlend = 1.0f;
// Move source with velocity set on Rigidbody component
D
audio.dopplerLevel = 1.0f;
audio.spatialBlend = 1.0f;
// No Rigidbody velocity needed, just move transform.position
Attempts:
2 left
💡 Hint

Doppler effect requires velocity information from Rigidbody for accurate simulation.

Practice

(1/5)
1. What does setting spatialBlend to 1.0 on an AudioSource in Unity do?
easy
A. Disables the audio source completely
B. Makes the sound play only in stereo without 3D effects
C. Makes the sound fully 3D and affected by position in space
D. Loops the sound continuously

Solution

  1. Step 1: Understand spatialBlend property

    The spatialBlend property controls how much the sound is 3D or 2D. 0 means 2D (no spatial effects), 1 means fully 3D.
  2. Step 2: Effect of setting spatialBlend to 1.0

    Setting it to 1.0 makes the sound fully 3D, so it changes based on the listener's position and direction.
  3. Final Answer:

    Makes the sound fully 3D and affected by position in space -> Option C
  4. Quick Check:

    spatialBlend = 1.0 means full 3D sound [OK]
Hint: Remember: 0 = 2D sound, 1 = full 3D sound [OK]
Common Mistakes:
  • Confusing 0 and 1 values for spatialBlend
  • Thinking spatialBlend controls volume
  • Assuming spatialBlend disables sound
2. Which of the following is the correct way to set an AudioSource to full 3D spatial sound in C# script in Unity?
easy
A. audioSource.spatialBlend = 0;
B. audioSource.spatialBlend = 1.0f;
C. audioSource.spatialBlend = "1";
D. audioSource.spatialBlend = true;

Solution

  1. Step 1: Check correct data type for spatialBlend

    The spatialBlend property expects a float value between 0 and 1, so it must be assigned a float like 1.0f.
  2. Step 2: Identify correct syntax

    audioSource.spatialBlend = 1.0f; uses 1.0f which is a float literal in C#. Setting to 0 produces 2D sound, assigning a string is invalid, and assigning a boolean is invalid.
  3. Final Answer:

    audioSource.spatialBlend = 1.0f; -> Option B
  4. Quick Check:

    Use float value 1.0f for spatialBlend [OK]
Hint: Use float (1.0f) for spatialBlend, not string or bool [OK]
Common Mistakes:
  • Assigning string or boolean instead of float
  • Using 0 instead of 1.0f for full 3D
  • Forgetting the 'f' suffix for float literals
3. Consider this Unity C# code snippet:
AudioSource audioSource = gameObject.AddComponent<AudioSource>();
audioSource.spatialBlend = 1.0f;
audioSource.minDistance = 1f;
audioSource.maxDistance = 10f;

// Listener is 5 units away from audioSource
float volume = audioSource.GetOutputData(0, 0);
What is true about the sound volume heard by the listener at 5 units distance?
medium
A. Volume will be between max and min volume due to distance attenuation
B. Volume will be zero because listener is beyond maxDistance
C. Volume will be unaffected by distance because spatialBlend is 0
D. Volume will be at maximum because listener is within minDistance

Solution

  1. Step 1: Understand minDistance and maxDistance roles

    minDistance is where sound is at full volume. maxDistance is where sound fades to zero. Between these, volume decreases gradually.
  2. Step 2: Analyze listener distance

    The listener is 5 units away, which is between minDistance (1) and maxDistance (10), so volume is partially attenuated (reduced), not full or zero.
  3. Final Answer:

    Volume will be between max and min volume due to distance attenuation -> Option A
  4. Quick Check:

    Distance between min and max means volume fades [OK]
Hint: Volume fades between minDistance and maxDistance [OK]
Common Mistakes:
  • Assuming volume is max at any distance
  • Confusing minDistance and maxDistance roles
  • Ignoring spatialBlend value
4. You wrote this code to make a sound 3D but it still sounds flat (2D):
AudioSource audioSource = gameObject.AddComponent<AudioSource>();
audioSource.spatialBlend = 0;
audioSource.Play();
What is the error and how to fix it?
medium
A. Set spatialBlend to 1.0f to enable 3D sound
B. Call audioSource.Stop() before Play()
C. Add an AudioListener component to the game object
D. Set volume to 0.5f for 3D effect

Solution

  1. Step 1: Identify spatialBlend value effect

    Setting spatialBlend to 0 means the sound is 2D (flat), so no 3D spatial effect.
  2. Step 2: Correct the spatialBlend value

    To make sound 3D, set spatialBlend to 1.0f so Unity applies spatial audio processing.
  3. Final Answer:

    Set spatialBlend to 1.0f to enable 3D sound -> Option A
  4. Quick Check:

    spatialBlend = 1.0f enables 3D sound [OK]
Hint: Use spatialBlend = 1.0f for 3D sound, not 0 [OK]
Common Mistakes:
  • Leaving spatialBlend at 0 for 3D sound
  • Thinking volume controls 3D effect
  • Forgetting AudioListener is needed but not the cause here
5. You want to create a game where a sound fades smoothly as the player moves away, but stays loud when close. Which combination of AudioSource settings achieves this best?
hard
A. Set spatialBlend = 0, minDistance = 0, maxDistance = 0
B. Set spatialBlend = 0.5f, minDistance = 10, maxDistance = 10
C. Set spatialBlend = 1.0f, minDistance = 15, maxDistance = 2
D. Set spatialBlend = 1.0f, minDistance = 2, maxDistance = 15

Solution

  1. Step 1: Choose spatialBlend for full 3D effect

    Setting spatialBlend to 1.0f ensures the sound is fully 3D and affected by distance.
  2. Step 2: Set minDistance and maxDistance correctly

    minDistance should be smaller than maxDistance so sound is loud close (within 2 units) and fades out smoothly by 15 units.
  3. Step 3: Eliminate incorrect options

    Setting spatialBlend = 0, minDistance = 0, maxDistance = 0 disables 3D sound, reversing min and max distances (min > max) is invalid, setting min and max equal causes no fade.
  4. Final Answer:

    Set spatialBlend = 1.0f, minDistance = 2, maxDistance = 15 -> Option D
  5. Quick Check:

    Full 3D + proper min/max distances = smooth fade [OK]
Hint: minDistance < maxDistance with spatialBlend = 1 for smooth fade [OK]
Common Mistakes:
  • Swapping minDistance and maxDistance values
  • Using spatialBlend less than 1 for full 3D
  • Setting minDistance equal to maxDistance