Как сделать таймер включения? - PullRequest
0 голосов
/ 11 июля 2019

Я хочу сделать таймер обратного отсчета, который будет возвращать значение bool, когда он активен, поэтому я могу проверить на другом скрипте, если активен, дать двойные баллы, если нет, то вам нужно дать нормальные баллы .. Я хочу сделать это более сложным, и я хочу добавить время на таймере, если таймер активен, если нет, то мы используем время по умолчанию для обратного отсчета ...

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

Скажем, как пример: Я включаю питание и таймер запускается на 5 секунд, считая до 0. Если я снова включу питание и таймер включится, скажем, 3, у включения должно быть 8 секунд. Когда powerup заканчивается, он должен идти с 5 секунд, когда игрок берет новый ..

Вот мой код, который не работает так, как я хочу. Кроме того, мой код не имеет функции, позволяющей добавлять время для включения при активном включении питания. Другими словами, я не знаю, как я могу проверить, powerup активен, и если да, просто добавьте к счетчику еще 5 секунд ..

Вот код, который не содержит времени добавления, он содержит только рабочий счетчик.

 void startDoublePoints()
{
    StartCoroutine("doublePoints");
    Time.timeScale = 1;
}
//Simple courutine
IEnumerator doublePoints()
{
    while (true)
    {
        yield return new WaitForSeconds(1);
        timeLeft--;
    }
}

Я надеюсь, что кто-то объяснит мне больше о том, как я могу достичь своей цели .. Я надеюсь, что я объяснил, что мне нужно достичь .. Если вы чего-то не понимаете, пожалуйста, спросите комментарий, и я попытаюсь объяснить это снова ..

Большое спасибо сообществу, я не знаю, как бы я научился чему-либо без этого замечательного места:)

1 Ответ

1 голос
/ 11 июля 2019
float powerUpTimer;
bool isDoublePoints = false;

void Update()
{
    // Check timer only when Power up time
    if(isDoublePoints)
    {
        // Countdown the timer with update time
        powerUpTimer -= Time.deltaTime;
        if(powerUpTimer <= 0)
        {
            // End of power up time 
            isDoublePoints = false;
            powerUpTimer = 0;
        }
    }
}

// Add any time player picks to timer
public void OnPickPowerUp(float buffTime)
{
    isDoublePoints = true;
    powerUpTimer += buffTime;
}
...