예제 #1
0
        protected override void FixedUpdate()
        {
            base.FixedUpdate();

            if (_character.Life == false)
            {
                State = YetiAnimation.Idle;
            }
        }
예제 #2
0
        /// <summary>
        /// Переключение режимов босса
        /// </summary>
        /// <param name="seconds">время до переключения</param>
        /// <param name="mode">режим активности</param>
        protected override IEnumerator SwitchMode(float seconds, string mode)
        {
            yield return(new WaitForSeconds(seconds));

            _mode = mode;

            if (_effectStars.activeSelf)
            {
                _effectStars.SetActive(false);
            }

            switch (mode)
            {
            case "run":
                _speed = Random.Range(14, 16);

                _quantityRuns--;
                State = YetiAnimation.Run;
                goto default;

            case "throw":
                State = YetiAnimation.Throw;
                DefineNextMode();
                goto default;

            case "hit":
                State = YetiAnimation.Punch;
                DefineNextMode();
                goto default;

            case "stupor":
                _health--;

                _rigbody.AddForce(_direction * -2.5f, ForceMode2D.Impulse);

                _effectStars.SetActive(true);
                _effectStars.transform.localPosition = new Vector2(2.25f * _direction.x, _effectStars.transform.localPosition.y);

                State = YetiAnimation.Idle;
                DefineNextMode();
                break;

            case "attack":
                State = YetiAnimation.Smash;

                SetQuantityRun();
                DefineNextMode();
                goto default;

            case "die":
                State = YetiAnimation.Die;

                _capsuleCollider.enabled = false;

                for (int i = 0; i < _obstacles.Length; i++)
                {
                    _obstacles[i].SetActive(false);
                }

                ShowFinish();
                break;

            default:
                SetDirection(true);
                ColliderOffset();
                break;
            }

            if (mode == "run")
            {
                ShowObstacles(_health);
            }
        }
예제 #3
0
    /// <summary>Определение следующего режима активности йети</summary>
    protected override IEnumerator SwitchMode(float seconds, string mode)
    {
        yield return(new WaitForSeconds(seconds));

        // Устанавливаем режим йети
        this.mode = mode;

        // Если отображаются оглушающие звезды, скрываем их
        if (effect.activeSelf)
        {
            effect.SetActive(false);
        }

        switch (mode)
        {
        case "run":
            // Устанавливаем случайную скорость
            speed = Random.Range(14, 16);

            // Уменьшаем количество забегов
            quantityRun--;

            // Устанавливаем анимацию бега
            State = YetiAnimation.Run;
            goto default;

        case "throw":
            // Устанавливаем анимацию броска
            State = YetiAnimation.Throw;

            // Определяем следующий режим
            DefineNextMode();
            goto default;

        case "hit":
            // Устанавливаем анимацию удара
            State = YetiAnimation.Punch;

            // Определяем следующий режим
            DefineNextMode();
            goto default;

        case "stupor":
            // Уменьшаем жизнь
            healthBoss--;

            // Создаем небольшой отскок от стены
            rigbody.AddForce(direction * -2.5f, ForceMode2D.Impulse);

            // Отображаем эффект звезд
            effect.SetActive(true);
            // Перемещаем звезды к голове йети
            effect.transform.localPosition = new Vector2(2.25f * direction.x, effect.transform.localPosition.y);

            // Сбрасываем анимацию
            State = YetiAnimation.Idle;

            // Определяем следующий режим
            DefineNextMode();
            break;

        case "attack":
            // Устанавливаем анимацию удара по земле
            State = YetiAnimation.Smash;

            // Определяем количество забегов
            SetQuantityRun();

            // Определяем следующий режим
            DefineNextMode();
            goto default;

        case "die":
            // Переключаемся на анимацию смерти
            State = YetiAnimation.Die;
            // Отключаем коллайдер йети
            capsule.enabled = false;

            // Скрываем дополнительные препятствия
            for (int i = 0; i < obstacles.Length; i++)
            {
                obstacles[i].SetActive(false);
            }

            // Отображаем финишные объекты
            ShowFinish();
            break;

        default:
            // Определяем направление
            SetDirection(true);
            // Смещаем коллайдер касания в направлении движения
            ColliderOffset();
            break;
        }

        if (mode == "run")
        {
            // Отображаем дополнительные препятствия
            ShowObstacles(healthBoss);
        }
    }