Перемещение за время в Unity

Как переместить объект за время в Unity

Очень частый вопрос, который я встречал на форумах — «Как переместить объект в Unity за время?»
Без какого-либо твинера, это можно сделать рассчитывая дельту для интерполяции по времени.
Например, вот так:

Скрипт перемещает объект в центр контейнера за 3 секунды. Легко можно адаптировать его, чтобы поворачивать за время, перемещать объект за время в 3d, и т.д.

Понравилась статья? Поделиться с друзьями:
Комментариев: 6
  1. Sasha Domase

    А не проще yield return new WaitForSecond ?

    1. Сергей Кормишин

      Что значит проще? Двигать нужно каждый фрейм, зачем возвращать WaitForSeconds, если не нужно ждать нисколько?

    2. Сергей Кормишин

      Вы не правильно задачу, наверное поняли) подправлю в статье. Нужно не через 3 секунды передвинуть объект, а в течении 3 секунд линейно передвигать

  2. иван иванов

    если в Update написать это:
    rectTransform.anchoredPosition = Vector2.Lerp(startPosition, targetPosition, delta/3);
    разве это не даст такой же результат?

    1. Сергей Кормишин

      Смотря как вы считаете последний параметр, если от времени как я, то сработает, если от позиции движение будет неплавное из-за разных deltaTime. И для Update ещё флажок дополнительный нужен «двигаюсь/не двигаюсь», хотя можно 2 вектора сравнивать..

      1. иван иванов

        спасибо за ответ

Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: