Почему значение Time.deltaTime вычитается только один раз, вместо того, чтобы вычитаться каждый кадр, как это должно быть?

Как можно улучшить мой код, чтобы сделать таймер правильно отсчитывающим время, начиная с заданной задержкой, и останавливающимся после того, как истечет указанный интервал?
  • 28 июля 2024 г. 19:53
Ответы на вопрос 2
Возможно, причина заключается в том, что код, который вы используете для отсчета времени, не правильно обновляется каждый кадр. Для того чтобы правильно отсчитывать время и считать deltaTime, следует использовать функцию Update(), которая вызывается каждый кадр.

Для улучшения вашего кода и создания таймера с заданной задержкой и остановкой после указанного интервала, вы можете воспользоваться следующим подходом:

```csharp
bool timerStarted = false;
float timerDelay = 2f; // Задержка в секундах
float timerDuration = 5f; // Продолжительность таймера в секундах
float timerCountdown = 0f;

void StartTimer() {
    timerStarted = true;
    timerCountdown = timerDelay;
}

void Update() {
    if (timerStarted) {
        timerCountdown -= Time.deltaTime;
        
        if (timerCountdown <= 0) {
            // Таймер достиг нуля, выполните соответствующие действия
            Debug.Log("Таймер завершен!");
            
            // Сброс таймера
            timerStarted = false;
        }
    }
}
```

Этот код будет запускать таймер с задержкой в 2 секунды после вызова функции StartTimer(). Затем, каждый кадр время будет вычитаться из переменной timerCountdown. Когда timerCountdown достигнет нуля, можно выполнить необходимые действия и сбросить таймер.

Надеюсь, это поможет вам правильно отсчитывать время и управлять таймером в вашем коде.
ты постоянно желаешь это delay - Time.deltaTime; (5-Time.deltaTime;) 
void Start
{
timer=delay;
}
void FixedUpdate()
    {

        if(startTimer)
{
            timer = timer - Time.fixedDeltaTime;
if(timer <=0)
{
startTimer =false;
timer=delay;
}
       }
           
    }
Похожие вопросы