Во-первых, Vector2.Lerp
не изменяет значение первого параметра.Вам нужно присвоить новое значение transform.position
, если вы хотите изменить положение преобразования таким образом.
Во-вторых, вам нужно обновлять позицию преобразования один раз в каждом кадре, чтобы преобразование двигалось плавно.
В-третьих, Vector2.Lerp
будет создавать только позиции между началом и концом с t
между 0 и 1. Это t
должно относиться к соотношению того, сколько времени прошло с момента начала этого движения, и какмного времени завершит движение.
Это хорошее применение для сопрограммы :
private IEnumerator GoToInSeconds(Vector2 pointB, float movementDuration)
{
Vector2 pointA = transform.position;
float timeElapsed = 0f;
while (timeElapsed < movementDuration)
{
yield return null;
timeElapsed += Time.deltaTime;
transform.position = Vector2.Lerp(pointA, pointB, timeElapsed/movementDuration);
}
}
Вот пример того, как использовать его в Start
:
void Start()
{
Vector2 pointB = new Vector2(20, 10);
StartCoroutine(GoToInSeconds(pointB, 3f));
}