Unity3D: Mathf Lerp слишком быстро, когда масштаб времени увеличивается - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть изображение с компонентом количества заполнения, контролируемым Mathf Lerp. Проблема заключается в том, что время завершения функции Mathf Lerp уменьшается больше, чем ожидалось, когда увеличивается шкала времени.

Когда шкала времени равна 2, выполнение функции должно занимать половину времени, но это занимает меньше, чем,Есть идеи почему?

public static float demolishTime = 6.0f

public void OnClickDemolish()
{
    InvokeRepeating("demolishProgress", 0f, 0.1f);
}

void demolishProgress()
{        
    progress += (Time.deltaTime / demolishTime);
    demolishProgressBar[DemolishManager.demolishState].fillAmount = (float)Mathf.Lerp(0, 1, progress);
    if (progress >= 1) demolishCompleted();
}

1 Ответ

1 голос
/ 29 сентября 2019

Кто-то может исправить меня, если я ошибаюсь, но это может быть связано с тем, что на 3-й аргумент InvokeRepeating, repeatRate, не влияет шкала времени.

Выможет рассмотреть использование Coroutine вместо этого, например так:

public static float demolishTime = 6.0f;

public void OnClickDemolish() {
    StartCoroutine(demolishProgress());
}

IEnumerator demolishProgress() {
    float progressedTime = 0f;

    // Assuming 'demolishTime' is the time taken to entirely demolish the thing.
    while (progressedTime < demolishTime) {
        yield return new WaitForEndOfFrame();
        progressedTime += Time.deltaTime;
        demolishProgressBar[DemolishManager.demolishState].fillAmount = Mathf.Lerp(0, 1, progressedTime);
    }

    demolishCompleted();
}
...