Skip to content
Радорама
Menu
  • SkillForce2
  • Другие игры
  • Unity
  • Блог
  • Творчество
  • Контакты
  • Поддержать
Menu

Плавное перемещение объекта с помощью Lerp

Posted on 24.02.202126.02.2021 by radoar

Плавное перемещение объекта в позицию endPosition за время duration.

Вызывается: StartCoroutine(Lerp(endPosition, duration));

Своими словами: Vector3.Lerp(p1, p2, p3) принимает «расстояние» между p1 и p2 за единицу, а p3 (значение от 0 до 1) — сколько вернуть из этого «расстояния». Если p3 = 0,  возвращает p1, если p3 = 1, возвращает p2, если p3 = 0.5 — половину, или (p1+p2)/2 и т.д.

Поскольку в этом примере p3 никогда не будет равен 1 (из-за timeElapsed < duration), в конце добавляется присваивание endPosition.

private IEnumerator Lerp(Vector3 endPosition, float duration)
{
  Vector3 startPosition = transform.position; 
  float timeElapsed = 0;
  while (timeElapsed < duration)
  {
    transform.position = Vector3.Lerp(startPosition, endPosition, timeElapsed / duration);
    timeElapsed += Time.deltaTime;
    yield return null;
  }
  transform.position = endPosition;
}

См. также Плавное перемещение объекта с помощью MoveTowards

72

SkillForce2

  • Главная
  • >> Поддержка <<
  • Об игре
  • Форум
  • Скриншоты
  • Видео
  • Играть

Войти

Регистрация

©2021 Радорама | Built using WordPress and Responsive Blogily theme by Superb