Это в основном сумма 2 векторов за время.
У вас есть начальная позиция (x0, y0), вектор начальной скорости (x, y) и вектор гравитации (0, -9.81) добавлено по времени. Вы можете построить функцию, которая дает вам позицию с течением времени:
f(t) = (x0 + x*t, y0 + y*t - 9.81t²/2)
translating to Unity:
Vector2 positionInTime(float time, Vector2 initialPosition, Vector2 initialSpeed){
return initialPosition +
new Vector2(initialSpeed.x * t, initialSpeed.y * time - 4.905 * (time * time);
}
Теперь выберите небольшое время дельты, скажем dt = 0.25
.
Time | Position
0) 0.00 | f(0.00) = (x0, y0)
1) 0.25 | f(0.25) = (x1, y1)
2) 0.50 | f(0.50) = (x2, y2)
3) 0.75 | f(0.75) = (x3, y3)
4) 1.00 | f(1.00) = (x4, y4)
... | ...
Со временем у вас есть много точек, где линия пересечется. Выберите временной интервал (скажем, 3 секунды), оцените все точки в диапазоне от 0 до 3 секунд (используя f
) и поместите средство визуализации строк на одно за другим.
Средство визуализации линий имеет такие свойства, как ширина, ширина со временем, цвет и т. д. c. Это зависит от вас.