No, you don't need to do nothing with the walk planes. You need to make a region in the SceneEdit, for example, a region called "carpet". Then you must add a custom property when the region "carpet" is selected. A dialog window will be appear. In this dialog you can create a variable and value for this variable, for example variable:surface value;carpet
In the sprite editor (if its a 2D character) or in the act3d file (if it's a 3d character) you need to indicate in that frame WME will be send the "footstep" event.
For example:
In the act3d file
ANIMATION
{
NAME="walk"
LOOPING=TRUE
EVENT
{
FRAME = 10
NAME = "footstep"
}
}
In the 10th frame of the animation walk, WME send the "footstep" event
Now, in the actor script, you need to write the code for play the sound of the footstep in the carpet:
on "footstep" // This is the event, this code will be execute when WME play the 10th frame of the animation,
// this frame will bi corresponded when the foot of the actor is in teh floor, of course.
{
// get a region the actor is standing in
var Reg = Scene.GetRegionAt(this.X, this.Y);
if (Reg!=null)
{
// play a sound depenging on a surface
// "surface" is a custom property we defined in SceneEdit
switch(Reg.surface)
{
case "carpet":
this.PlaySound("carpet_footstep.ogg"); // If the actor is wlking on the carpet then play carpet foot step sound
break;
default:
this.PlaySound("normal_footstep.ogg"); // In other case, play the normal footstep sound (floor).
break;
}
}
}
If you've several surfaces, you need to define several regions, one for every surface, and create the variable "surface" and his value for every surface.
In the code, you can add several pieces of code case .... break; with the check of the surface type and play the corresponfing surface sound.