перемещение 2d объекта из точки а в б без изменения его вращения - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь переместить 2d объект из точки a в b, не меняя его вращение в единицу.

Я пытался использовать Vector2.Lerp(), но он не работает

Vector2 pointB = new Vector2(20, 10);
Vector2.Lerp(transform.position, pointB, 3F);

Код должен переместить объект из точки a в b за 3F секунды

1 Ответ

1 голос
/ 26 июня 2019

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