Как постоянно обновлять систему выносливости

#c# #unity3d

Вопрос:

Я пытаюсь создать систему выносливости, при которой, если игрок удерживаетShift, он теряет выносливость.

У меня это там, где каждый разShift, когда нажимают, они теряют часть, но как я заставляю их постоянно терять выносливость?

Например, каждую секунду они теряют 3, вместо того чтобы терять только 3 при нажатии клавиши.

Вот текущий код, который у меня есть для этого.

      //running
    if (Input.GetKeyDown(KeyCode.LeftShift))
    {
        speed = speed   run_speed;
        Stamina = Stamina - 3;
    }
    if (Input.GetKeyUp(KeyCode.LeftShift))
    {
        speed = speed - run_speed;
        Stamina = Stamina   3;
    }
 

Ответ №1:

Основываясь на вашем коде, вы можете объявить логическое bool isRunning значение в классе и установить его true при запуске.

 if (Input.GetKeyDown(KeyCode.LeftShift))
{
    speed = speed   run_speed;
    // Stamina = Stamina - 3;
    isRunning = true;
}
if (Input.GetKeyUp(KeyCode.LeftShift))
{
    speed = speed - run_speed;
    // Stamina = Stamina   3;
    isRunning = false;
}
 

Добавьте это в свою функцию обновления

 private void Update(){
    if (isRunning) { Stamina -= 3 * Time.deltaTime }
    else { Stamina  = 3 * Time.deltaTime }
}