Пример #1
0
    // MUSICS
    public void PlayMusic(MusicNames musicID)
    {
        if (_selectedMusic != null)
        {
            StopMusic();
            _finishingMusic = _selectedMusic;
        }
        _selectedMusic = Musics.Find(music => music.MusicID == musicID);
        if (_selectedMusic == null)
        {
            Debug.LogError("The music to play has not been found -- " + musicID);
            return;
        }
        if (MusicSources.ContainsKey(musicID))
        {
            Debug.LogWarning("The music is already being played -- " + musicID);
            return;
        }

        if (_finishingMusic != null)
        {
            StartCoroutine(FadeMixerGroup.StartFade(AudioMixer, "Fading", FadingTime, -40f));
            StartCoroutine(ChangePlayingMusic());
        }
        else
        {
            _musicCoroutine = StartCoroutine(PlayingMusic(_selectedMusic));
        }
    }
 private void PlayAudiosources()
 {
     StartCoroutine(FadeMixerGroup.StartFade(_mixer, exposedParam, fadeDuration, 1));
     foreach (var audioSource in _audioSources)
     {
         audioSource.Play();
     }
 }
Пример #3
0
    public IEnumerator FadeAmbientOut(float fadeTime)
    {
        yield return(StartCoroutine(FadeMixerGroup.StartFade(mixer, "AmbientVolume", fadeTime, -1f)));

        foreach (AudioSource i in ambient.GetComponents <AudioSource>())
        {
            Destroy(i);
        }
    }
    private IEnumerator StopAudiosource()
    {
        StartCoroutine(FadeMixerGroup.StartFade(_mixer, exposedParam, fadeDuration, 0));
        yield return(new WaitForSeconds(fadeDuration));

        foreach (var audioSource in _audioSources)
        {
            audioSource.Stop();
        }
    }
 public void adjustCurrentPlayingVolume(float targetVolume)
 {
     for (int i = 0; i < musicThemes.Length; i++)                                                                                                            // checks all Audio Sources (music themes)
     {
         if (musicThemes[i].source.isPlaying)                                                                                                                // If the music theme is playing
         {
             StartCoroutine(FadeMixerGroup.StartFade(musicThemes[i].source.outputAudioMixerGroup.audioMixer, musicThemes[i].name + "Vol", 2, targetVolume)); // adjusts the volume in a fade
         }
     }
 }
Пример #6
0
 public void FadeOutCurrentAudioTrack(float duration = 1f, float targetVolume = 1f)
 {
     if (currentAudioTrack == audioTrack1)
     {
         StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic1", duration, 0f));
     }
     else
     {
         StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic2", duration, 0f));
     }
 }
 public void StopCurrentPlaying()
 {
     for (int i = 0; i < musicThemes.Length; i++)                                                                                                    // checks all Audio Sources (music themes)
     {
         if (musicThemes[i].source.isPlaying)                                                                                                        // If the music theme is playing
         {
             StartCoroutine(FadeMixerGroup.StartFade(musicThemes[i].source.outputAudioMixerGroup.audioMixer, musicThemes[i].name + "Vol", 5.5f, 0)); // turn down the volume in a fade
             StartCoroutine(StopAfterDelay(musicThemes[i].source));                                                                                  // stop the music theme
         }
     }
 }
Пример #8
0
    private void Update()
    {
        if (!bStarted && Input.GetButtonDown("Jump"))
        {
            player.bCanMove = true;

            bStarted = true;
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Effects, "EffectsMasterVolume", 0.01f, 1.0f));
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Music, "MusicMasterVolume", 7.0f, 1.0f));
            audioManager_Effects.PlaySound("Start");
            animator.SetBool("Active", false);
        }
    }
Пример #9
0
 public void ResumeGame()
 {
     FadeMixerGroup.TransitToSnapshot(startingSnapshot);
     toUpdateTime = true;
     PauseMenuUI.SetActive(false);
     if (WeaponUI != null)
     {
         WeaponUI.SetActive(true);
     }
     SaveSystem.SavePlayer();
     Time.timeScale = 1f;
     GameIsPaused   = !GameIsPaused;
 }
    public void PlayMusic(string name, float targetVolume) // play a music theme (by name) after a specified delay (in float seconds)
    {
        for (int i = 0; i < musicThemes.Length; i++)       // checks all Audio Sources (music themes)
        {
            if (musicThemes[i].source.isPlaying)           // If the music theme is already playing
            {
                if (name != musicThemes[i].name)           // if the requested music theme is not this one
                {
                    //  Debug.Log("name: " + name + " - musicThemes[i].name: " + musicThemes[i].name);
                    StartCoroutine(FadeMixerGroup.StartFade(musicThemes[i].source.outputAudioMixerGroup.audioMixer, musicThemes[i].name + "Vol", 5.5f, 0)); // turn down the volume in a fade
                    StartCoroutine(StopAfterDelay(musicThemes[i].source));                                                                                  // stop the music theme
                }
            }
            else
            {
                if (name == "Battle")
                {
                    if (SceneManager.GetActiveScene().name == "Tutorial")
                    {
                        musicThemes[2].source.clip = battle[4];                                                                                      // tutorial battle music
                        FadeMixerGroup.SetVolume(musicThemes[5].source.outputAudioMixerGroup.audioMixer, musicThemes[5].name + "Vol", targetVolume); // turn down the volume
                        musicThemes[5].source.Stop();                                                                                                // stop instructions music
                        FadeMixerGroup.SetVolume(musicThemes[2].source.outputAudioMixerGroup.audioMixer, musicThemes[2].name + "Vol", targetVolume); // turn up the volume
                        musicThemes[2].source.Play();                                                                                                // play battle music
                        return;
                    }
                    else
                    {
                        musicThemes[2].source.clip = battle[runTimeChoices.runTimeLoopCount - 1];
                    }
                    StopCurrentPlaying();
                    StartCoroutine(FadeMixerGroup.StartFade(musicThemes[i].source.outputAudioMixerGroup.audioMixer, musicThemes[i].name + "Vol", 5, targetVolume)); // turn up the volume in a fade
                }
                else if (name == "Peace")
                {
                    musicThemes[3].source.clip = peace[runTimeChoices.runTimeLoopCount - 1];
                }
                StartCoroutine(FadeMixerGroup.StartFade(musicThemes[i].source.outputAudioMixerGroup.audioMixer, musicThemes[i].name + "Vol", 5, targetVolume)); // turn up the volume in a fade
            }
        }

        MusicTheme mt = Array.Find(musicThemes, musicTheme => musicTheme.name == name);

        if (mt == null)
        {
            Debug.LogWarning("Music Theme: " + name + " not found!");
            return;
        }

        StartCoroutine(PlayAfterDelay(mt.source));
    }
Пример #11
0
 public void PauseGame()
 {
     PauseMenuUI.SetActive(true);
     if (WeaponUI != null)
     {
         WeaponUI.SetActive(false);
     }
     FadeMixerGroup.TransitToSnapshot(pausedSnapshot);
     timeDebugText.text = timeTakenCurrentStage.ToString("n2") + " s";
     timeTakenPerStage[currentSceneName] = timeTakenCurrentStage;
     Time.timeScale = 0f;
     toUpdateTime   = false;
     SaveSystem.SavePlayer();
     GameIsPaused = !GameIsPaused;
 }
Пример #12
0
    public void Start()
    {
        if (bPlayMusic)
        {
            PlaySound("Music");
            PlaySound("Beat");

            //StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "MusicMasterVolume", 0.01f, 1.0f));
        }

        if (!bPlayMusic)
        {
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "EffectsMasterVolume", 0.01f, 1.0f));
        }
    }
Пример #13
0
    // Time-based enemy spawner
    protected IEnumerator BattleController()
    {
        // Start battle with checkpoint if there's a checkpoint reached.
        for (int i = checkpointAt; i < battles.Length; i++)
        {
            // Start battle after timer since previous battle started, but only if previous battle has been finished.
            Battle battle = battles[i];
            if (i > checkpointAt)
            {
                yield return(new WaitForSeconds(battle.timer));

                Battle prevBattle = battles[i - 1];
                yield return(new WaitUntil(() => prevBattle.TestBattleOver()));
            }

            // If it's the boss battle, delay a little before starting for dramatic effect.
            if (i == bossBattleId && i != checkpointAt)
            {
                StartCoroutine(FadeMixerGroup.Fade(mixer, "levelVolume", 2f, 0f));
                yield return(new WaitForSeconds(bossWait));
            }
            battle.StartBattle();

            // Play level music or boss music depending on the battle
            if (i == checkpointAt && i != bossBattleId)
            {
                levelMusic.Play();
            }
            else if (i == bossBattleId)
            {
                bossMusic.Play();
                mixer.SetFloat("bossVolume", 0f);
                StartCoroutine(FadeMixerGroup.Fade(mixer, "bossVolume", 2f, 1f));
            }

            // Save a checkpoint if battle is specified to have a checkpoint before it.
            if (battle.checkpointBefore)
            {
                if (objSys == null)
                {
                    objSys = GameObject.Find("HUD").GetComponent <ObjectivesSystem>();
                }
                checkpointAt = i;
                objSys.CheckpointUpdate();
                Debug.Log("Current Phase: " + checkpointAt);
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (previousVelocity <= 0.5 && rb.velocity.magnitude > 0.5)
        {
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "drivingVolume", 2, 1));
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "idleVolume", 2, 0));
        }

        if (previousVelocity > 0.5 && rb.velocity.magnitude <= 0.5)
        {
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "idleVolume", 2, 1));
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "drivingVolume", 2, 0));
        }

        previousVelocity = rb.velocity.magnitude;
    }
Пример #15
0
 private void Start()
 {
     if (PlayerPrefs.HasKey("musicVolume"))
     {
         audioMixer.SetFloat("MusicVolume", Mathf.Log10(0.0001f) * 20); ///so the fade-in actually starts from silence
         StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "MusicVolume", musicFadeIn, PlayerPrefsManager.GetMusicVolume()));
     }
     else
     {
         StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "MusicVolume", musicFadeIn, 1f));
     }
     if (PlayerPrefs.HasKey("sfxVolume"))
     {
         ChangeSfxVolume(PlayerPrefsManager.GetSfxVolume());
     }
 }
Пример #16
0
    protected override void ComputeVelocity()
    {
        if (bCanMove)
        {
            Vector2 move = Vector2.zero;
            move.x = Input.GetAxisRaw("Horizontal");

            // flip gravity
            if (Input.GetButtonDown("Jump") && (velocity.y < 0.01f && velocity.y > -0.01f))
            {
                FlipGravity();
                audioManager_Effects.PlaySound("Jump");
            }

            // play landing sound and fade in and out the beat track
            if (!bAlreadyLanded && velocity.y < 0.01f && velocity.y > -0.01f)  // if not moving on y-axis
            {
                bAlreadyLanded = true;
                audioManager_Effects.PlaySound("Landed");
                StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Music, "BeatMasterVolume", 0.4f, 0.0f));
            }
            else if (velocity.y > 0.01f || velocity.y < -0.01f) // if moving up or down
            {
                bAlreadyLanded = false;
                StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Music, "BeatMasterVolume", 0.01f, 1.0f));
            }

            // flip sprite
            bool flipSprite = (spriteRenderer.flipX ? (move.x > 0.01f) : (move.x < -0.01f));
            if (flipSprite)
            {
                spriteRenderer.flipX = !spriteRenderer.flipX;
            }

            targetVelocity = move * maxSpeed;

            if ((move.x > 0.01f) || (move.x < -0.01f))
            {
                animator.SetBool("Moving", true);
            }
            else
            {
                animator.SetBool("Moving", false);
            }
        }
    }
Пример #17
0
    private void TransitStageToNextLevel()
    {
        // yes i know this line is very convoluted, but the scenemanager is not able to call GetSceneAt(index) for unloaded scenes.
        string prevSceneName = Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(SceneManager.GetActiveScene().buildIndex - 1));

        if (currentSceneName.ElementAt(5) != prevSceneName.ElementAt(5) && !prevSceneName.Contains("Cutscene")) // a hack done to see if the level the user is at changed
        {
            currentLevel += 1;
            Debug.Log("Level Changed: " + currentLevel); // tutorial is lvl 0

            // change bgm
            audioSources[currentLevel].volume = 0.1f;
            string nextSceneMusicParam = FadeMixerGroup.exposedBGMParams[currentLevel];
            string prevSceneMusicParam = FadeMixerGroup.exposedBGMParams[currentLevel - 1];
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, prevSceneMusicParam, 2f, 0f));
            StartCoroutine(FadeMixerGroup.StartFade(audioMixer, nextSceneMusicParam, 4f, 1f));
        }
    }
Пример #18
0
 public void PlayCrossFadeMusic(AudioClip clipToPlay, float duration = 1f, float targetVolume = 1f, float audioPosition = 0)
 {
     if (currentAudioTrack == audioTrack1)
     {
         StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic1", duration, 0f));
         StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic2", duration, targetVolume));
         currentAudioTrack = audioTrack2;
     }
     else
     {
         StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic2", duration, 0f));
         StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic1", duration, targetVolume));
         currentAudioTrack = audioTrack1;
     }
     currentAudioTrack.time = audioPosition;
     currentAudioTrack.clip = clipToPlay;
     currentAudioTrack.Play();
 }
Пример #19
0
    private void Update()
    {
        if (counter >= 3)
        {
            bReady = true;

            StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Music, "MusicMasterVolume", 1.0f, 0.0f));
            GetComponent<AudioSource>().minDistance = 30.0f;
            GetComponent<AudioSource>().maxDistance = 130.0f;
        }

        DisplayCounters();

        if (bActive)
        {
            StartCoroutine(FadeAudioSource.StartFade(GetComponent<AudioSource>(), 0.2f, 0.0f));
            animator.SetBool("Active", true);
            StartCoroutine(EndScreenCoroutine());
        }
    }
Пример #20
0
    void Update()
    {
        if (_nextSoundTime < Time.timeAsDouble)
        {
            AudioClip clip = _audioClips.GetRandom();

            // If we are playing Nosce Te Ipsem, we will want to treat the volume in certain ways and
            // wait a while before we play anything else
            if (_audioClips.IndexOf(clip) == _audioClips.Count - 1)
            {
                IncidentalSoundSource.volume = 0.0f;
                IncidentalSoundSource.PlayOneShot(clip);
                StartCoroutine(FadeMixerGroup.StartFade(IncidentalSoundSource, 8f, 0.125f));
                _nextSoundTime = Time.timeAsDouble + 180;
            }
            else
            {
                IncidentalSoundSource.volume = 0.20f;
                IncidentalSoundSource.PlayOneShot(clip);
                _nextSoundTime = Time.timeAsDouble + Random.Range(10, 50);
            }
        }
    }
Пример #21
0
    //public AudioMixer audioMixer_Music;

    private void Update()
    {
        if (bActive)
        {
            finalScoreText.text = "Y0U  F0UND  " + player.score.ToString() + " / 6  C0INS";
            deathCountText.text = "Y0U  DIED  " + Mathf.FloorToInt(player.deathCount / 2).ToString() + "  TIMES";   // glitch with dying twice
            holder.SetActive(true);
            animator.SetBool("Active", true);

            // restart on SPACE press
            if (Input.GetButtonDown("Jump"))
            {
                //Debug.Log("Restarting game");

                // fade music
                // fade out should be shorter than the RestartGameCoroutine() WaitForSeconds()
                //StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Music, "MusicMasterVolume", 4.0f, 0.0f));
                StartCoroutine(FadeMixerGroup.StartFade(audioMixer_Effects, "EffectsMasterVolume", 4.0f, 0.0f));
                //StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "MasterVolume", 4.0f, 0.0f));

                StartCoroutine(RestartGameCoroutine());
            }
        }
    }
Пример #22
0
 private void DeathSequence()
 {
     deathScreen.SetActive(true);
     StartCoroutine(FadeMixerGroup.StartFade(audioMixer, "Volume", 1f, -80f));
 }
Пример #23
0
    void updateStage()
    {
        currentStage       = SceneManager.GetActiveScene().buildIndex;
        currentSceneName   = SceneManager.GetSceneByBuildIndex(currentStage).name;
        stageNameText.text = currentSceneName;

        if (currentStage >= 1)
        {
            if (!audioIsPlaying) // play audio if it is not playing already
            {
                startingSnapshot = audioMixer.FindSnapshot("Starting");
                pausedSnapshot   = audioMixer.FindSnapshot("Paused");
                audioIsPlaying   = true;
                audioSources     = GetComponents <AudioSource>();
                foreach (AudioSource audioSource in audioSources)
                {
                    FadeMixerGroup.TurnOffSound(audioMixer);
                    audioSource.Play();
                }

                StartCoroutine(FadeMixerGroup.StartFade(audioMixer, FadeMixerGroup.exposedBGMParams[0], 2f, 1f));
            }

            // update timeTakenPerStage
            if (!timeTakenPerStage.ContainsKey(currentSceneName))
            {
                Debug.Log("not loading from save data");
                timeTakenPerStage.Add(currentSceneName, 0f); // key may already exist if loaded from savefile.
                timeTakenCurrentStage = 0f;
                thingsPickedUp        = new List <string>();
            }

            // set pause menu ui and time debug text
            toUpdateTime = true;
            PauseMenuUI  = gameObject.transform.Find("PauseCanvas/PauseMenu").gameObject;
            if (PauseMenuUI != null)
            {
                PauseMenuUI.SetActive(false);
                Button pauseButton = GetComponentInChildren <Button>();
                pauseButton.onClick.AddListener(delegate { PauseGame(); });
                Button[] buttons = PauseMenuUI.GetComponentsInChildren <Button>();
                foreach (Button button in buttons)
                {
                    switch (button.name)
                    {
                    case "ResumeButton":
                        button.onClick.AddListener(delegate { ResumeGame(); });
                        break;

                    case "QuitButton":
                        button.onClick.AddListener(delegate { QuitGame(); });
                        break;
                    }
                }
            }

            // set player spawn position
            player = GameObject.FindGameObjectWithTag("Player");
            if (player != null)
            {
                playerSpawnPosition = player.transform.position;
            }

            setProgressSlider();
            TransitStageToNextLevel();
        }

        if (currentStage >= 2 && WeaponUI == null)
        {
            setWeaponUI();
        }

        SaveSystem.SavePlayer();
    }
Пример #24
0
 public void FadeAmbientIn(float fadeTime)
 {
     StartCoroutine(FadeMixerGroup.StartFade(mixer, "AmbientVolume", fadeTime, 1f));
 }
Пример #25
0
 public void FadeOutAllMusic(float duration = 1.0f)
 {
     StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic1", duration, 0f));
     StartCoroutine(FadeMixerGroup.StartFade(mainAudioMixer, "VolumeMusic2", duration, 0f));
 }
Пример #26
0
 public void FadeMusicIn(float fadeTime)
 {
     StartCoroutine(FadeMixerGroup.StartFade(mixer, "MusicVolume", fadeTime, 1f));
 }
    // Time-based enemy spawner
    new IEnumerator BattleController()
    {
        // Start battle with checkpoint if there's a checkpoint reached.
        for (int i = checkpointAt; i < battles.Length; i++)
        {
            // Start battle after timer since previous battle started, but only if previous battle has been finished.
            Battle battle = battles[i];
            if (i > checkpointAt)
            {
                yield return(new WaitForSeconds(battle.timer));

                Battle prevBattle = battles[i - 1];
                yield return(new WaitUntil(() => prevBattle.TestBattleOver()));
            }

            // If it's the boss battle, delay a little before starting for dramatic effect.
            if (i == bossBattleId && i != checkpointAt)
            {
                StartCoroutine(FadeMixerGroup.Fade(mixer, "levelVolume", 2f, 0f));
                yield return(new WaitForSeconds(bossWait));
            }
            battle.StartBattle();

            // Play level music or boss music depending on the battle
            if (i == checkpointAt && i != bossBattleId)
            {
                levelMusic.Play();
            }
            else if (i == bossBattleId)
            {
                bossMusic.Play();
                mixer.SetFloat("bossVolume", 0f);
                StartCoroutine(FadeMixerGroup.Fade(mixer, "bossVolume", 2f, 1f));
            }

            // Save a checkpoint if battle is specified to have a checkpoint before it.
            if (battle.checkpointBefore)
            {
                if (objSys == null)
                {
                    objSys = GameObject.Find("HUD").GetComponent <ObjectivesSystem>();
                }
                checkpointAt = i;
                objSys.CheckpointUpdate();
                Debug.Log("Current Phase: " + checkpointAt);
            }

            // Change phase text & objectives based on phase
            switch (i)
            {
            case 0:     // Intro pre-tutorial
                hud.SetPhaseText("Phase 0/4");
                objSys.ActivateObjectives(i, -1);
                break;

            case 1:     // Intro post-tutorial
                break;

            case 2:     // Phase 1
                hud.SetPhaseText("Phase 1/4");
                objSys.ActivateObjectives(i - 1, -1);
                break;

            case 3:     // Phase 2
                hud.SetPhaseText("Phase 2/4");
                objSys.CompleteAutomatic(i - 2, -1);
                objSys.ActivateObjectives(i - 1, -1);
                break;

            case 4:     // Phase 3
                hud.SetPhaseText("Phase 3/4");
                objSys.CompleteAutomatic(i - 2, -1);
                objSys.ActivateObjectives(i - 1, -1);
                break;

            case 5:     // Phase 4
                hud.SetPhaseText("Phase 4/4");
                objSys.ActivateObjectives(3, -1);
                break;

            case 6:     // Boss
                hud.SetPhaseText("BOSS");
                objSys.CompleteAutomatic(3, -1);
                objSys.ActivateObjectives(4, -1);
                break;

            default:
                Debug.Log("Error evaluating current phase. Resetting level.");
                ResetCheckpoints();
                break;
            }
        }
    }