【发布时间】:2021-12-04 11:04:49
【问题描述】:
float moveSpeed = 1.5f;
float step = moveSpeed * Time.deltaTime;
StartingFlash.GetComponent<CanvasGroup>().alpha = Mathf.Lerp(StartingFlash.GetComponent<CanvasGroup>().alpha, 0f, step);
所以我遇到了 lerp 问题,上面的代码是我目前尝试 lerp 的方式,但它不起作用。打印 Time.deltaTime 时,由于某种原因,它等于 0,使第二个变量 step 为 0,这就是我认为 lerping 不起作用的原因。我在这里做错了吗?这根本就不是 lerp 的正确方法吗?我尝试了很多方法,但对我来说仍然很困惑,因此非常感谢任何帮助。
【问题讨论】:
-
您从哪个 Unity 生命周期方法调用它?
-
例如,如果您从
FixedUpdate()中调用Time.deltaTime,它实际上将返回Time.fixedDeltaTime(根据this)。如果碰巧将Time.timeScale设置为0,那么这将始终返回0。 -
@OmarAbdelBari 我从
Start()调用的协程调用Time.deltaTime。Time.timeScale设置为 0,但您说它只会从FixedUpdate()返回 0 或者您分别说这两件事,您必须为我澄清一下,我是不调用它,如果在我的情况下 timeScale 为 0,它仍然保持在 0 吗? -
我举了一个例子,但是由于
Time.deltaTime是 UI 帧之间的时间,我认为它不适用于Start()。不过我有点生疏了。在Update()中尝试一下,看看第一帧之后会发生什么。 -
@OmarAbdelBari 似乎即使在
Update()中它仍然等于 0@