Ali Şahan Yalçın
DocsSurfaces

Setting it up

Surfaces

Making grass sound different from stone.

A surface is a Physical Surface, the same list the rest of the engine uses.

1. Name your surfaces

Project Settings > Engine > Physics > Physical Surface. Fill in the slots:

code
1
2
3
SurfaceType1 = Grass
SurfaceType2 = Stone
SurfaceType3 = Metal

2. Make physical materials

Right click in the Content Browser, then Physics > Physical Material. Make one per surface, and set its Surface Type to the matching entry.

3. Assign them

Open a material used on your floors and set its Phys Material to the right one. For landscapes, set it per paint layer.

4. Fill in the database

Now the Surface Effects map inside a state entry has something to point at. Press +, pick Grass, and give it sounds.

How the plugin finds the surface

By default it traces straight down from the foot bone and reads the physical material of whatever it hits.

You can change that on the component with Surface Source:

OptionWhat it does
Line Trace From FootTraces down from the foot. The most accurate, and the only one that can report a different surface per foot.
Character Movement FloorReuses the floor the movement component already found. Cheaper, but one surface for the whole character. Falls back to a trace when that floor carries no physical material.
CustomDetects nothing. You override Resolve Footstep Surface and answer yourself.
WARNING: Leave Trace Complex on if you paint different physical materials onto different parts of one mesh, or if you read them from landscape layers. With it off you get the material of the whole asset, which for a landscape means no material at all.

When the surface reads as Default

That means the trace hit something with no physical material on it. The footstep still plays, using Fallback Effects.

This is normal and useful. Fill in fallbacks so untagged geometry still makes a sound, and only add specific surfaces where it matters.