我有一个图像,其填充量组件由 Mathf Lerp 控制。问题是,当时间尺度增加时,完成 Mathf Lerp 函数的时间比预期减少得更多。当时间尺度等于 2 时,函数应该花费一半的时间来完成,但实际花费的时间比这个少。知道为什么吗?public static float demolishTime = 6.0fpublic 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 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
如果我错了,有人可能会纠正我,但这可能是因为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();
}
- 1 回答
- 0 关注
- 86 浏览
添加回答
举报
0/150
提交
取消