Unity Fill Amount, остановка анимации после выполнения условия - PullRequest
0 голосов
/ 03 марта 2019

Итак, у меня есть изображение, которое начинается с заливки 0. Затем, когда логическое значение истинно, он запускает некоторый код, который заполняет изображение на определенную величину.Моя проблема в том, что я добавляю условие, чтобы проверить, соблюдается ли сумма заполнения, но сумма заполнения превышает максимальную сумму.

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 голосов
/ 03 марта 2019

Используйте Mathf.MoveTowards для достижения того, что вы хотите.В соответствии с документацией Unity3D эта функция:

Перемещает значение тока к цели.

По сути, это то же самое, что и 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;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...