MotionMovementSoundComponent
Provides movement sound playback driven by Animation Notifiers with surface detection and speed-based modulation.
Requirements
- Character with standard
UCharacterMovementComponent - Animation Blueprint with footstep Animation Notifiers
- Surface sound DataTable configured
- DataTable Requirements:
- Must use
FMotionSurfaceSoundDataRowrow structure - Include at least a "Default" row for fallback sounds
- Must use
- Gameplay Tags (optional):
- Can react to movement state tags for sound variations
Installation
- Add
UMotionMovementSoundComponentto your Character Blueprint or C++ class - Create a DataTable using
FMotionSurfaceSoundDataRowrow structure - Add surface types (Concrete, Wood, Grass, etc.) with corresponding sounds
- Set the
SurfaceSoundDataTableproperty to your DataTable - Configure
DefaultSurfaceSoundRowName(typically "Default") - Add Animation Notifiers to call
TriggerFootstepSound()at appropriate frames


Functionality
The component detects surface types and plays appropriate sounds when triggered by Animation Notifiers.
Expandability
| Function | Description | Use Case Examples |
|---|---|---|
TriggerFootstepSound() | Main function to trigger sounds | • Call from Animation Notifiers • Trigger from code events |
TriggerJumpSound() | Play jump takeoff sound | • Different sounds for jump types • Surface-specific jump sounds |
TriggerLandingSound() | Play landing impact sound | • Fall damage indicators • Heavy landing effects |
GetCurrentSurfaceType() | Override surface detection | • Water detection • Special material handling |
OnSurfaceChanged | Blueprint event for surface changes | • Update UI surface indicator • Trigger particle effects |
Configuration
Surface Data Properties
| Property | Type | Default | Description |
|---|---|---|---|
| SurfaceSoundDataTable | UDataTable* | - | DataTable containing surface sound configurations |
| DefaultSurfaceSoundRowName | FName | "Default" | Default row name for fallback sounds |
Sound Settings
| Property | Type | Default | Description |
|---|---|---|---|
| BaseVolume | float | 1.0 | Base volume for movement sounds |
| SpeedVolumeMultiplier | float | 0.5 | Volume multiplier based on movement speed |
| BasePitch | float | 1.0 | Base pitch for movement sounds |
| SpeedPitchMultiplier | float | 0.2 | Pitch multiplier based on movement speed |
| VolumeVariation | float | 0.1 | Random volume variation range (±) |
| PitchVariation | float | 0.05 | Random pitch variation range (±) |
Feature Configuration
| Property | Type | Default | Description |
|---|---|---|---|
| bEnableSurfaceDetection | bool | true | Detect surface types for sound variation |
| bEnableSpeedModulation | bool | true | Modulate audio based on movement speed |
| bEnable3DAudio | bool | true | Enable 3D spatial audio for footsteps |
| MaxAudioDistance | float | 2000.0 | Maximum distance for footstep audio |
Debug Configuration
| Property | Type | Default | Description |
|---|---|---|---|
| bShowDebugInformation | bool | false | Debug information display |
Blueprint Events
Event Functions
| Event | Parameters | Description |
|---|---|---|
| OnFootstepTriggered | USoundBase* Sound, UPhysicalMaterial* SurfaceType, const FString& MovementState | Fired when footstep sound is triggered (includes movement state) |
| OnMovementSoundTriggered | const FString& SoundType, USoundBase* Sound | Fired when any movement sound is triggered |
| OnSurfaceTypeChanged | UPhysicalMaterial* NewSurfaceType, UPhysicalMaterial* OldSurfaceType | Fired when surface type changes |
DataTable Setup
Create a DataTable with FMotionSurfaceSoundDataRow row structure:
Row Structure Properties
| Property | Type | Description |
|---|---|---|
| Physical Material | UPhysicalMaterial* | Physical material to match for this surface |
| Sound Variants | FMotionSoundVariants | MetaSound sources for all movement actions |
| Volume Multiplier | float (0.0-2.0) | Volume multiplier for sounds on this surface |
| Pitch Multiplier | float (0.1-2.0) | Pitch multiplier for sounds on this surface |
Sound Variants Structure
| MetaSound Property | Description |
|---|---|
| FootstepMetaSound | Footstep sounds (handles variation internally) |
| JumpMetaSound | Jump takeoff sounds (handles variation internally) |
| LandingMetaSound | Landing impact sounds (handles variation internally) |
| CrouchMetaSound | Crouch movement sounds (handles variation internally) |
| SprintMetaSound | Sprint movement sounds (handles variation internally) |
Note: All sounds are MetaSound sources that handle variation and movement state internally. The CrouchMetaSound and SprintMetaSound fields are optional and only needed if you want specific sounds for those movement states.
Animation Notifier Integration
In your Animation Blueprint:
- Add Animation Notifier at appropriate movement frames
- Call the corresponding trigger function for the movement type
- Component handles surface detection, speed modulation, and sound selection
Notifier Function Calls
cpp
// Footstep Animation Notifier
Target: MotionMovementSoundComponent
Function: TriggerFootstepSound
// No parameters needed - automatic detection
// Jump Animation Notifier
Target: MotionMovementSoundComponent
Function: TriggerJumpSound
// Triggered at jump start
// Landing Animation Notifier
Target: MotionMovementSoundComponent
Function: TriggerLandingSound
// Triggered at ground impact
// Custom Movement Sound
Target: MotionMovementSoundComponent
Function: TriggerMovementSound
SoundType: "Slide" // or "Vault", "Climb", etc.