在速度之间平稳缓慢切换的最短代码是什么



它应该平稳地缓慢地将速度从0增加到1,然后缓慢地平稳地从1减少到0,然后再次从0减少到1,以此类推。

但它现在所做的只是一直在增加速度值。也许有一种简单的方法,更短的代码可以做到这一点?

public Animator playerAnimator;
public float speed;
private float t = 0.0f;
private float min = 0;
private float max = 1;
private bool maxed = false;
void Update()
{
if (t == 0)
{
maxed = true;
}

if(t == 1)
{
maxed = false;
}
if(maxed)
{
t += speed * Time.deltaTime;
playerAnimator.SetFloat("Forward", Mathf.Lerp(min, max, t));
}
else
{
t -= speed * Time.deltaTime;
playerAnimator.SetFloat("Forward", Mathf.Lerp(min, max, t));
}
} 

您可以使用Mathf.PingPong在两个值之间来回切换。

public Animator playerAnimator;
public float speed;
private float t = 0.0f;
private float min = 0;
private float max = 1;
void Update()
{
t += speed * Time.deltaTime;
playerAnimator.SetFloat("Forward", Mathf.PingPong(t, max-min) + min);
}

由于Mathf.PingPong只能在0和你给它的长度之间Ping Pong,而不能在最小值和最大值之间,所以你需要给它max-min的长度(本质上是最大值和最小值之间的长度(,然后把min加回结果,这样它就从min开始,而不是从0开始。

最新更新