统一填充量,一旦达到条件就停止动画

时间:2019-03-03 19:44:40

标签: c# unity3d

因此,我有一个以0填充开始的图像。然后,布尔值为true时,它将运行一些将图像填充到特定数量的代码。我的问题是我要添加一个条件来检查是否满足填充量,但是填充量超出了最大数量。

private void Update() {
  if (update) {
    if (icon.fillAmount < icon.fillAmount + amount) {
      icon.fillAmount += amount * Time.deltaTime;
      Debug.Log(icon.fillAmount);
    } else update = false;
  }
}

在我的代码中,我有一个更新布尔值,当它为true时,它将检查填充量是否小于最大填充量。如果那是错误的,那么它将运行一行代码以平稳地增加填充量,然后记录填充量,否则将更新布尔值更改为false。但是,例如,如果amount = 0.5f,当我登录fillAmount时,它会覆盖amount。我认为这与Time.deltaTime有关,但我不知道如何解决。

1 个答案:

答案 0 :(得分:0)

使用Mathf.MoveTowards实现您想要的。根据Unity3D documentation,此功能:

  

将当前值移动到目标。

     

这与Mathf.Lerp本质上相同,但是该函数   将确保速度不会超过maxDelta 。的负值   maxDelta将值推离目标。

  if (update) {
    if (icon.fillAmount < 1) {
      icon.fillAmount = Mathf.MoveTowards(icon.fillAmount, 1, amount * Time.deltaTime);
      Debug.Log(icon.fillAmount);
    } else update = false;
  }