예제 #1
0
        public override void OnInspectorGUI()
        {
            FootstepOverride fo = (FootstepOverride)target;

            ResetErrorsAndWarnings();

            if (fo.FootstepOverrideName.IsNullOrWhitespace())
            {
                AddWarning("Override name is null or empty.");
            }

            DrawDefaultInspector();

            ShowErrorsAndWarnings();
        }
예제 #2
0
        /// <summary>
        /// Emits a ladder step sound.
        /// </summary>
        public void EmitLadderSound()
        {
            if (Player.Footstep.GlobalVolume <= 0 || Player.Footstep.Asset == null) // If global volume or footstep asset is null, don't bother with the rest.
            {
                return;
            }

            FootstepAsset.Data data;

            // Get the corresponding footstep data
            if (CurrentLadderCollider == null)
            {
                data = Player.CurrentFootstepData;
            }
            else
            {
                FootstepOverride footstepOverride = CurrentLadderCollider.GetComponent <FootstepOverride>();
                MeshRenderer     mr = CurrentLadderCollider.GetComponent <MeshRenderer>();

                if (footstepOverride != null)
                {
                    data = Player.Footstep.Asset.GetData(footstepOverride.FootstepOverrideName);
                }
                else
                {
                    data = Player.CurrentFootstepData;
                }
            }

            if (data == null)
            {
                throw new Exception("Footstep data was not found, are you sure you have any footsteps in your FootstepAsset or that you provided an existing footstep data name for the default footsteps?");
            }

            AudioClip sound  = data.GetRandomFootstep(); // Get sound
            float     volume = Player.Footstep.Asset.WalkVolume;

            if (volume <= 0)
            {
                return;
            }

            float pitch = data.GetRandomPitch(); // Get random specified pitch

            // Play sound
            if (!Player.Footstep.Is3D)
            {
                Audio.Play(sound, volume * Player.Footstep.GlobalVolume, pitch);
            }
            else
            {
                if (Player.Footstep.Range <= 0f)
                {
                    Audio.Play3D(sound, transform, volume * Player.Footstep.GlobalVolume, pitch);
                }
                else
                {
                    Audio.Play3D(sound, transform, Player.Footstep.GlobalVolume * volume, pitch, Player.Footstep.Range);
                }
            }
        }