Unity3D:当时间尺度增加时,Mathf Lerp 太快

我有一个图像,其填充量组件由 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();

}


饮歌长啸
浏览 93回答 1
1回答

茅侃侃

如果我错了,有人可能会纠正我,但这可能是因为InvokeRepeating重复率的第三个参数不受时间尺度的影响。您可以考虑使用协程来代替,如下所示: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();}
打开App,查看更多内容
随时随地看视频慕课网APP