Пример #1
0
        /// <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();
            }
        }
Пример #2
0
        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();
            }
        }