Страница 1 из 1

Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 19:03
Zimaell
Есть точка А и точка В, нужно чтобы объект двигался от одной точки к другой за определенное время (к примеру ровно за 5 секунд реального времени), как вычислить скорость?
То есть чтобы при любых обстоятельствах на сцене объект проходил равномерно расстояние за 5 секунд (к примеру)...

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 19:17
Alex5
Вообще, это - школьный курс. Хотя для плоскости, хоть для 3D. Сейчас в школах совсем плохо с математикой, да?

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 19:25
Jarico
Alex5 писал(а):Вообще, это - школьный курс. Хотя для плоскости, хоть для 3D. Сейчас в школах совсем плохо с математикой, да?

Сейчас учатся ради оценок а не ради знаний...


Zimaell писал(а):Есть точка А и точка В, нужно чтобы объект двигался от одной точки к другой за определенное время (к примеру ровно за 5 секунд реального времени), как вычислить скорость?
То есть чтобы при любых обстоятельствах на сцене объект проходил равномерно расстояние за 5 секунд (к примеру)...


Время вычисляй... Вспоминай математику (это не вышка)

Синтаксис:
Используется csharp
Vector3.Lerp(pointA,pointB, time);
 


пример интерполяции между двумя точками в кадрах
Синтаксис:
Используется csharp
    public int interpolationFramesCount = 45; // количество кадров для интерполяции позиции от точки к точке
    int elapsedFrames = 0;

    void Update()
    {
        float interpolationRatio = (float)elapsedFrames / interpolationFramesCount;

        Vector3 interpolatedPosition = Vector3.Lerp(Vector3.up, Vector3.forward, interpolationRatio);

        elapsedFrames = (elapsedFrames + 1) % (interpolationFramesCount + 1);//обнуляем количество отрендереных фреймов

        Debug.DrawLine(Vector3.zero, Vector3.up, Color.green);
        Debug.DrawLine(Vector3.zero, Vector3.forward, Color.blue);
        Debug.DrawLine(Vector3.zero, interpolatedPosition, Color.yellow);
    }
 

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 19:38
Alex5
Jarico писал(а):Сейчас учатся ради оценок а не ради знаний...

Я не думал, то за 35 лет всё станет настолько печально. Впрочем, может это единицы, а?

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 20:40
Zimaell
у меня две координаты и время за которое нужно пройти, допустим
StartPoints = Vector3(1,1,1);
TargetPoints = Vector3(5,1,5);
t = 5; // нужное время прохождения в секундах
Speed = ??? // вычислить скорость
transform.position = Vector3.MoveTowards(transform.position, TargetPoints, Speed * Time.deltaTime);


Какая формула должна быть чтобы получить Speed в моем случае?

P.s. - Извините что-то голова сегодня не варит совсем...

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 20:48
Alex5
Скорость - это расстояние, делённое на время. Если скорость должна быть равномерной, конечно.

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 20:55
Zimaell
как мне вектор поделить на целое число?
или между векторами получить расстояние, вообще туплю как...
день сегодня какой-то...

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 20:57
Alex5
https://docs.unity3d.com/ScriptReferenc ... tance.html
Хотя, можно и вручную, конечно. Расстояние между точками в пространстве - это тоже школьный курс.

Re: Как вычислить скорость движения от одной точки к другой за о

СообщениеДобавлено: 07 авг 2020, 21:01
Zimaell
спасибо за ссылку
Расстояние между точками в пространстве - это тоже школьный курс.

очень давно это было, ничего оттуда не помню уже #:-s