AudioSource On Spline - Unity Addon
Overview
AudioSourceOnSpline is an advanced Unity component that automatically positions audio sources along splines based on player movement. This addon dynamically places audio sources at the closest point on a spline relative to the player's position, creating more realistic and immersive 3D audio experiences.
IMPORTANT: Dependencies
REQUIRED PACKAGES
This addon requires the following Unity packages to be installed in your project:
-
Unity Splines Package (com.unity.splines)
Version 2.0.0 or newer -
Cinemachine Package (com.unity.cinemachine)
Version 2.8.0 or newer
Installation via Package Manager:
- Open Window → Package Manager
- Click the "+" button and select "Add package by name"
- Add:
com.unity.splines
- Add:
com.unity.cinemachine
Note: The addon will not function properly without these dependencies. Please ensure they are installed before importing AudioSourceOnSpline.
Key Features
Intelligent Positioning
- Automatically finds the closest point on spline relative to player position
- Uses performance-optimized algorithms for position calculation
- Prioritized search around last known position for efficiency
Performance Optimization
- Configurable update frequency to balance performance and responsiveness
- Level-of-Detail (LOD) system - skips updates when player is far away
- Minimum movement threshold prevents unnecessary calculations
- Optimized search algorithms with adjustable sample counts
Smooth Movement
- Optional smooth interpolation between spline positions
- Configurable smoothing speed for natural audio transitions
- Instant positioning mode for precise control
Highly Configurable
- Easy-to-use Inspector interface with tooltips
- Performance settings for different hardware capabilities
- Movement and update behavior customization
Use Cases
Environmental Audio
- Rivers, streams, and water sources following natural paths
- Wind effects along mountain ridges or valleys
- Traffic sounds following road networks
Industrial Environments
- Conveyor belt systems and machinery sounds
- Pipeline audio effects
- Factory ambient sounds following production lines
Dynamic Music Systems
- Musical elements that follow specific paths
- Positional audio for concerts or performances
- Interactive soundscapes
Setup Instructions
1. Prerequisites
- Unity 2022.3 LTS or newer
- Unity Splines package installed
- Audio Source component
2. Installation
- Import the AudioSourceOnSpline package into your project
- Add the AudioSourceOnSpline component to any GameObject with an Audio Source
- Assign required references in the Inspector
3. Basic Configuration
- Spline Container: Assign the SplineContainer that defines the audio path
- Player: Assign the player Transform to track
- Update Frequency: Set how often position updates occur (default: 0.2 seconds)
- Min Move Distance: Minimum distance player must move for updates (default: 1 unit)
Inspector Parameters
References
- Spline Container: The SplineContainer component that defines the audio path
- Player: The Transform of the player or camera to track
Update Settings
- Update Frequency: How many times per second the position is updated (0.2 = 5 times per second)
- Min Move Distance: Minimum distance the player must move before triggering an update
Movement Settings
- Smooth Movement: Enable/disable smooth interpolation between positions
- Smooth Speed: Speed of the smooth movement interpolation (higher = faster)
Performance Settings
- Sample Count: Number of samples when searching the entire spline (lower = better performance)
- Max Update Distance: Maximum distance from player before skipping updates
Performance Guidelines
Recommended Settings
High Performance (Mobile/VR):
- Update Frequency: 0.3-0.5 seconds
- Sample Count: 20-30
- Max Update Distance: 500-1000 units
Balanced (Desktop):
- Update Frequency: 0.1-0.2 seconds
- Sample Count: 30-50
- Max Update Distance: 1000-2000 units
High Quality (Powerful Hardware):
- Update Frequency: 0.05-0.1 seconds
- Sample Count: 50-100
- Max Update Distance: 2000+ units
Best Practices
Optimization Tips
- Use appropriate update frequencies for your use case
- Set reasonable max update distances to avoid unnecessary calculations
- Use smooth movement for natural audio transitions
- Consider the complexity of your splines when setting sample counts
Audio Setup
- Configure Audio Source 3D settings appropriately
- Set proper distance attenuation curves
- Use appropriate audio formats for your target platform
- Consider using audio occlusion for realistic effects
Spline Design
- Keep splines reasonably detailed but not overly complex
- Use control points strategically for important audio positions
- Test spline paths with different player movement patterns
- Consider using multiple splines for complex audio environments
Troubleshooting
Common Issues
Audio source not moving:
- Ensure Spline Container and Player are properly assigned
- Check that the spline has valid control points
- Verify update frequency is not too low
Performance issues:
- Reduce sample count for complex splines
- Increase update frequency interval
- Set appropriate max update distance
- Use LOD system effectively
Jerky movement:
- Enable smooth movement
- Adjust smooth speed value
- Check update frequency settings
- Ensure spline has sufficient detail
Audio cutting out:
- Check Audio Source 3D settings
- Verify distance attenuation curves
- Ensure max update distance is appropriate
- Check for audio occlusion issues
Technical Details
Algorithm Overview
The component uses a two-stage search algorithm:
- Local Search: First searches around the last known position for efficiency
- Global Search: Falls back to full spline search if local search is insufficient
Performance Characteristics
- Memory Usage: Minimal - only stores essential state variables
- CPU Usage: Optimized with configurable update frequencies and LOD system
- Scalability: Supports multiple instances with independent settings
Version History
Version 1.0
- Initial release
- Basic spline following functionality
- Performance optimization features
- Configurable parameters
© 2025 - AudioSourceOnSpline Unity Addon