Skip to content

How to configure movement sounds

Use this guide to connect MotionMovementSoundComponent to surface-based footstep, jump, and landing sounds.

Create the DataTable

  1. Create a DataTable with the FMotionSurfaceSoundDataRow row structure.
  2. Add a Default row for fallback sounds.
  3. Add rows for project surfaces such as concrete, wood, grass, or metal.
  4. Assign MetaSound sources for the movement actions each surface supports: FootstepMetaSound, CrouchMetaSound, SprintMetaSound, JumpMetaSound, and LandingMetaSound.
  5. Set volume and pitch multipliers for each row.

The component selects the DataTable row from the detected physical material. If no material-specific row matches, it uses DefaultSurfaceSoundRowName.

Movement sound DataTable default row fields

Configure the movement sound profile

  1. Add MotionMovementSoundComponent to the character.
  2. Duplicate DA_MotionMovementSoundProfile_Default_v2_0_0 from Plugins/MotionCore/Content/Motion/Profiles/v2_0_0 into your project content.
  3. Assign your DataTable to SurfaceSoundDataTable on the duplicated profile.
  4. Set DefaultSurfaceSoundRowName to the fallback row, usually Default.
  5. Enable surface detection when physical materials must select sounds.
  6. Enable 3D audio for spatialized footsteps from the attached audio component of the character.
  7. Assign a FootstepAttenuation asset if you want specified distance falloff, spatialization, or occlusion settings. If 3D audio is enabled and this field is empty, Motion uses the default Unreal attenuation behavior.
  8. Assign the duplicated profile to the Profile property of the component.

Tune speed modulation

Edit SoundSettings on the duplicated profile:

FieldWhat it controls
BaseVolumeStarting volume before speed, surface, and master multipliers
SpeedVolumeMultiplierExtra volume added as platform-relative speed approaches MaxWalkSpeed
BasePitchStarting pitch before speed and surface multipliers
SpeedPitchMultiplierExtra pitch added as platform-relative speed approaches MaxWalkSpeed
VolumeVariationRandom volume offset applied when MetaSound-triggered movement sounds play
PitchVariationRandom 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.

To prevent speed-based volume or pitch changes, set the two speed multipliers to 0.0.

Configure sprint and crouch variants

Footstep notifies do not force a sprint or crouch sound by name. When a footstep notify fires, the component reads the active Motion state tags of the owning character. It selects SprintMetaSound first when Motion.State.Sprinting is present. It selects CrouchMetaSound next when Motion.State.Crouching is present. For other conditions, it uses FootstepMetaSound.

Trigger sounds from animation

Add Animation Notifiers at the frames for sound playback:

Movement momentFunction
Foot contacts groundTriggerFootstepSound()
Jump startsTriggerJumpSound()
Landing impactTriggerLandingSound()
Known string aliasTriggerMovementSound()

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 native aliases Footstep, Walk, Crouch, Sprint, Run, Jump, Landing, and Land. It routes those names to the footstep, jump, or landing paths.

Use PlayModulatedSound() only for direct playback of a supplied USoundBase from Blueprint or C++. Supply the specified volume and pitch multipliers. The function applies the active master volume multiplier. It does not do surface lookup, speed modulation, random variation, or sprint/crouch variant selection.

Reload DataTable changes during tests

Call ReloadSurfaceSoundDataTable() after row edits during runtime tests or editor-callable workflows. The component clears its cached surface rows and reloads the assigned SurfaceSoundDataTable. Then, it validates the FMotionSurfaceSoundDataRow table type.

For the full API reference, see MotionMovementSoundComponent.

Motion - Advanced First Person Character Controller