Exemplo n.º 1
0
        protected override void FixedUpdate()
        {
            base.FixedUpdate();

            if (_character.Life == false)
            {
                State = BullAnimation.Idle;
            }
        }
Exemplo n.º 2
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, 18);
            // Определяем направление
            SetDirection();

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

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

        case "hit":
            // Устанавливаем анимацию атаки
            State = BullAnimation.Attack;
            break;

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

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

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

            // Устанавливаем стандартную анимацию
            State = BullAnimation.Idle;

            // Определяем следующий режим активности
            DefineNextMode();
            break;

        case "attack":
            // Определяем направление быка
            SetDirection();

            // Переключаемся на анимацию атаки
            State = BullAnimation.Attack;

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

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

        case "die":
            // Переключаемся на анимацию смерти
            State = BullAnimation.Dead;

            // Отключаем коллайдер быка
            capsule.enabled = false;

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

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

        if (mode == "run")
        {
            // Отображаем дополнительные препятствия
            ShowObstacles(healthBoss);
        }
    }
Exemplo n.º 3
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, 18);
                SetDirection();

                _quantityRuns--;
                State = BullAnimation.Run;
                break;

            case "hit":
                State = BullAnimation.Attack;
                break;

            case "stupor":
                _health--;

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

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

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

            case "attack":
                SetDirection();
                State = BullAnimation.Attack;

                SetQuantityRun();
                DefineNextMode();
                break;

            case "die":
                State = BullAnimation.Dead;

                _capsuleCollider.enabled = false;

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

                ShowFinish();
                break;
            }

            if (mode == "run")
            {
                ShowObstacles(_health);
            }
        }