Appearance
How to configure movement sounds
Use this guide to connect MotionMovementSoundComponent to surface-based footstep, jump, and landing sounds.
Create the DataTable
- Create a DataTable using the
FMotionSurfaceSoundDataRowrow structure. - Add a
Defaultrow for fallback sounds. - Add rows for project surfaces such as concrete, wood, grass, or metal.
- Assign MetaSound sources for the movement actions each surface supports:
FootstepMetaSound,CrouchMetaSound,SprintMetaSound,JumpMetaSound, andLandingMetaSound. - Set volume and pitch multipliers for each row.
The component chooses the DataTable row from the detected physical material, then falls back to DefaultSurfaceSoundRowName when no material-specific row matches.

Configure the movement sound profile
- Add
MotionMovementSoundComponentto the character. - Duplicate
DA_MotionMovementSoundProfile_Default_v2_0_0fromPlugins/MotionCore/Content/Motion/Profiles/v2_0_0into your project content. - Assign your DataTable to
SurfaceSoundDataTableon the duplicated profile. - Set
DefaultSurfaceSoundRowNameto the fallback row, usuallyDefault. - Enable surface detection when physical materials should select sounds.
- Enable 3D audio for spatialized footsteps played from the character's attached audio component.
- Assign a
FootstepAttenuationasset if you want explicit distance falloff, spatialization, or occlusion settings. If 3D audio is enabled and this field is empty, Motion leaves Unreal's default attenuation behavior in place. - Assign the duplicated profile to the component's
Profileproperty.
Tune speed modulation
Edit SoundSettings on the duplicated profile:
| Field | What it controls |
|---|---|
BaseVolume | Starting volume before speed, surface, and master multipliers |
SpeedVolumeMultiplier | Extra volume added as platform-relative speed approaches MaxWalkSpeed |
BasePitch | Starting pitch before speed and surface multipliers |
SpeedPitchMultiplier | Extra pitch added as platform-relative speed approaches MaxWalkSpeed |
VolumeVariation | Random volume offset applied when MetaSound-triggered movement sounds play |
PitchVariation | Random pitch offset applied when MetaSound-triggered movement sounds play |
GetSpeedBasedVolume() and GetSpeedBasedPitch() expose the current calculated values to Blueprint. SetMasterVolumeMultiplier() scales future movement sound volume and clamps the value from 0.0 to 2.0.
Set both speed multipliers to 0.0 when movement speed should not affect volume or pitch.
Configure sprint and crouch variants
Footstep notifies do not force a sprint or crouch sound by name. When a footstep notify fires, the component checks the owning character's active Motion state tags, selects SprintMetaSound first when Motion.State.Sprinting is present, selects CrouchMetaSound next when Motion.State.Crouching is present, and otherwise uses FootstepMetaSound.
Trigger sounds from animation
Add Animation Notifiers at the frames where sounds should play:
| Movement moment | Function |
|---|---|
| Foot contacts ground | TriggerFootstepSound() |
| Jump starts | TriggerJumpSound() |
| Landing impact | TriggerLandingSound() |
| Known string alias | TriggerMovementSound() |
The component handles surface detection, state-based MetaSound selection, speed modulation, random variation, surface row multipliers, and 3D or 2D playback when the notifier fires.
TriggerMovementSound() accepts the built-in aliases Footstep, Walk, Crouch, Sprint, Run, Jump, Landing, and Land. It routes those names to the existing footstep, jump, or landing paths.
Use PlayModulatedSound() only when a Blueprint or C++ caller needs to play a supplied USoundBase directly with explicit volume and pitch multipliers. It applies the current master volume multiplier, but it does not run surface lookup, speed modulation, random variation, or sprint/crouch variant selection.
Reload DataTable changes while testing
Call ReloadSurfaceSoundDataTable() after editing rows during runtime testing or editor-callable workflows. The component clears its cached surface rows, reloads the assigned SurfaceSoundDataTable, and validates that the table uses FMotionSurfaceSoundDataRow.
For the full API reference, see MotionMovementSoundComponent.