/// <summary> /// Отображение результата уровня /// </summary> public void ShowResult() { // Отключаем фоновую музыку _ = StartCoroutine(_backgroundMusic.ChangeVolume(-0.1f, x => x > 0)); // Отображаем необходимые элементы меню _menuItems[(int)MenuItems.Blackout].SetActive(true); _menuItems[(int)MenuItems.Characters].SetActive(true); _menuItems[(int)MenuItems.Menu].SetActive(true); _menuItems[(int)MenuItems.Results].SetActive(true); // Обновляем общее количество пойманных персонажей PlayerPrefs.SetInt("victims", PlayerPrefs.GetInt("victims") + _levelManager.SavedVictims); if (LevelManager.GameMode == LevelManager.GameModes.Victory) { // Удваиваем набранные очки _levelManager.ChangeScore(_levelManager.Score); // Отображаем панель победы _menuItems[(int)MenuItems.Victory].SetActive(true); // Устанавливаем звук и воспроизводим _audioResults.clip = _audioClips[(int)AudioClips.Victory]; _playingResults.PlaySound(); var progress = PlayerPrefs.GetInt("progress"); // Если прогресс викторины не превышает номер уровня if (progress <= LevelSelection.LevelNumber) { // Увеличиваем прогресс PlayerPrefs.SetInt("progress", progress + 1); } // Увеличиваем общий и текущий счет PlayerPrefs.SetInt("total-score", PlayerPrefs.GetInt("total-score") + _levelManager.Score); PlayerPrefs.SetInt("current-score", PlayerPrefs.GetInt("current-score") + _levelManager.Score); AchievementPerLevel(); // Отображаем счетчик очков _ = StartCoroutine(ScoreCounter()); } else { // Отображаем панель проигрыша _menuItems[(int)MenuItems.Lose].SetActive(true); // Устанавливаем звук и воспроизводим _audioResults.clip = _audioClips[(int)AudioClips.Lose]; _playingResults.PlaySound(); } }
protected void OnCollisionEnter2D(Collision2D collision) { // Если падающий персонаж касается дороги if (collision.gameObject.GetComponent <Road>()) { // Если персонаж был пойман if (_isFall == false) { _isGround = true; _sprite.flipX = false; // Активируем триггер спасения _animator.SetTrigger("Save"); } else { // Активируем триггер смерти _animator.SetTrigger("Dead"); // Проигрываем звук смерти _playingSound.PlaySound(); // Возвращаем персонажа в пул _ = StartCoroutine(ReturnToPool()); // Записываем совершенную ошибку _levelManager.ChangeErrors(1); // Уменьшаем счет уровня _levelManager.ChangeScore(_weight * (-1) / 3); } // Понижаем слой персонажа _sprite.sortingOrder = 3; // Уменьшаем количество жильцов _levelManager.ReduceQuantityVictims(); } }