Ejemplo n.º 1
0
    private void Start()
    {
        clock        = FindObjectOfType <Clock>();
        stopObjects += FindObjectOfType <BackgroundSoundController>().Stop;
        stopObjects += clock.PlayAlarm;
        stopObjects += FindObjectOfType <PauseButton>().Stop;
        stopObjects += FindObjectOfType <EyeBlinkController>().Stop;
        stopObjects += FindObjectOfType <Monster>().Stop;

        covering     = FindObjectOfType <Covering>();
        camAnimation = FindObjectOfType <CamAnimation>();
    }
Ejemplo n.º 2
0
    private IEnumerator CoveringAction()
    {
        while (true)
        {
            timeUnderCovering = 0f;

            while (!isCovering)                                                                                                                                                  //Цикл выполняется, пока игрок не укрыт одеялом
            {
                if (staminaPresentValue != _staminaMaxValue)                                                                                                                     //Операции в условии выполняются, если выносливость была потрачена
                {
                    staminaPresentValue = Mathf.Clamp((staminaPresentValue += (Time.fixedDeltaTime / regenerationStaminaDebuffCoefficient)), staminaMinValue, _staminaMaxValue); //Восстановление выносливости до заданных пределов
                    ButtonFillAmount();
                }
                yield return(new WaitForFixedUpdate());
            }

            canUseButton = !canUseButton;                //Запрещаем нажатие кнопки
            animator.SetBool(conditionName, isCovering); //Проигрываем анимацию покрывала
            coveringSound.Play();

            RotateCamera.StopRotate();
            CamAnimation.CoveringEffect();
            yield return(new WaitForSeconds(animationCoveringDuration)); //Приостанавливаем на время действия анимации покрывала

            canUseButton = !canUseButton;
            while (isCovering)                //Цикл выполняется, пока игрок укрыт одеялом
            {
                if (staminaPresentValue <= 0) //Если стамина падает ниже нуля, прерываем цикл
                {
                    isCovering = !isCovering;
                }
                staminaPresentValue -= Time.fixedDeltaTime; //Отнимаем стамину
                timeUnderCovering   += Time.fixedDeltaTime; //Просчитываем, сколько времени игрок находится под одеялом
                ButtonFillAmount();
                yield return(new WaitForFixedUpdate());
            }
            canUseButton = !canUseButton;                //Запрещаем нажатие кнопки,
            animator.SetBool(conditionName, isCovering); //И проигрываем
            coveringSound.Play();

            CamAnimation.CoveringEffectReverse();                        //Также проигрываем анимацию обратного движения камеры
            yield return(new WaitForSeconds(animationCoveringDuration)); //Пока проигрывается анимация движения камеры, запрещено ее поворачивать

            RotateCamera.StartRotate();                                  //Разрешаем камере двигаться

            yield return(new WaitForSeconds(remainingTime));             //Ожидание делается для того, чтобы игрок не мог постоянно нажимать на кнопку активации, тем самым, мешая логике аниматора

            canUseButton = !canUseButton;                                //Разрешаем нажатие кнопки
        }
    }
Ejemplo n.º 3
0
 public override void ScreamerEffect()
 {
     CamAnimation.StickmanShaking();
 }
Ejemplo n.º 4
0
 public override void ScreamerEffect()
 {
     CamAnimation.HandShaking();
 }