예제 #1
0
    void Start()
    {
        GenericVehicleSounds.instance = this;
        PubSub.subscribe("Volume:ambient", this);

        GenericVehicleSounds.ambientSoundSources = new List <AudioSource> (maxAmbientChannels);
        for (int i = 0; i < maxAmbientChannels; i++)
        {
            AudioSource ambientSoundSource = Game.instance.gameObject.AddComponent <AudioSource> ();
            ambientSoundSource.playOnAwake  = false;
            ambientSoundSource.spatialBlend = 1f;
            ambientSoundSource.clip         = GenericVehicleSounds.instance.ambientTrafficSound;
            ambientSoundSource.loop         = true;
            ambientSoundSource.volume       = volume;
            ambientSoundSource.time         = Misc.randomRange(0f, GenericVehicleSounds.instance.ambientTrafficSound.length);
            GenericVehicleSounds.ambientSoundSources.Add(ambientSoundSource);
        }
    }
예제 #2
0
    public static void VehicleCountChange()
    {
        int amount = Vehicle.numberOfCars;
        int calculatedNumberOfChannels = Mathf.CeilToInt((float)amount / vehiclesPerChannel);
        int wantedNumberOfChannels     = Mathf.Clamp(calculatedNumberOfChannels, 1, maxAmbientChannels);

        if (wantedNumberOfChannels < numberOfActiveChannels)
        {
            for (int i = wantedNumberOfChannels; i < numberOfActiveChannels; i++)
            {
                GenericVehicleSounds.stopAmbientSound(i);
            }
        }
        else if (wantedNumberOfChannels > numberOfActiveChannels)
        {
            for (int i = numberOfActiveChannels; i < wantedNumberOfChannels; i++)
            {
                GenericVehicleSounds.startAmbientSound(i);
            }
        }
        numberOfActiveChannels = wantedNumberOfChannels;
    }