Forum rules - please read before posting.

Character-Specific Footstep Sounds on Shared Surfaces (3D Setup)

Hi Chris,

I hope you’re doing well. First, thank you for the help you’ve given me in the past—Adventure Creator has been a huge part of my project, and I really appreciate your support.

I’m currently using the latest version of Adventure Creator (1.82.1) with Unity 2022.3.0 in a 3D setup, and I’ve been exploring the new Footstep Sounds system. I really like this system and how flexible it is for surface-specific sounds, but I’ve hit a limitation that’s impacting my project.

In my game, I have multiple characters walking on the same surface for example, an office floor but each character needs unique footstep sounds:

robotic character that plays metallic clanking sounds when walking around .

male character with heavy boot sounds.

female character with high-heel taps.

The issue is that the Surfaces system applies footstep sounds globally to the surface itself (like the office floor). As a result, all characters end up playing the same sounds, which breaks immersion.

I have multiple 3D scenes where this setup applies.

I’m not a programmer, so I rely on Adventure Creator’s editor tools to set things up. Would it be possible to add an option in the Footstep Sounds component to assign a default set of sounds per character?

This would allow each character to have their own fallback sounds without requiring surface-specific overrides or the creation of duplicate surfaces.
The new footstep system is great, but adding this option would make it far easier to manage footstep sounds for multiple characters across shared surfaces. It would be a huge benefit for developers like me who aren’t coders and rely on Adventure Creator’s tools.

Thank you again for all your hard work and support—Adventure Creator is an amazing toolkit, and I’m excited about the improvements you’ve been adding. I’d love to hear your thoughts on this!

Best regards,
Raff

Comments

  • This is possible with a custom script that hooks into the OnRequestFootstepSounds custom event.

    There's a few ways you can go about this. Here's an example script that lets you define a set of normal/alternative surface names for a character. For example, "OfficeFloor" and "OfficeFloor_Robot". When the former is detected, it instead switches to the latter.

    Copy/paste this in a C# script named SurfaceModifier.cs, attach to a character, and fill in its Inspector:

    using UnityEngine;
    using AC;
    
    public class SurfaceModifier : MonoBehaviour
    {
    
        public FootstepSounds _footstepSounds;
        public AlternativeSurface[] alternativeSurfaces = new AlternativeSurface[0];
    
        void OnEnable () { EventManager.OnRequestFootstepSounds += OnRequestFootstepSounds; }
        void OnDisable () { EventManager.OnRequestFootstepSounds -= OnRequestFootstepSounds; }
    
        void OnRequestFootstepSounds (FootstepSounds _footstepSounds)
        {
            if (footstepSounds != _footstepSounds) return;
    
            var surface = footstepSounds.CurrentSurface;
            if (surface == null) return;
    
            foreach (var alternativeSurface in alternativeSurfaces)
            {
                if (surface.label == alternativeSurface.original)
                {
                    footstepSounds.CurrentSurface = KickStarter.settingsManager.GetSurface (alternativeSurface.alternative);
                    return;
                }
            }
        }
    
        [System.Serializable]
        public class AlternativeSurface
        {
            public string original;
            public string alternative;
        }
    
    }
    
  • Hi Chris
    Thank you for your help and the SurfaceModifier script!! Works well I really appreciate the time you spent doing it...

    Thanks again
    Best,
    Raff
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.