protected override void FixedUpdate() { base.FixedUpdate(); if (_character.Life == false) { State = YetiAnimation.Idle; } }
/// <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); } }
/// <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); } }