У вас есть позиция персонажа. Джойстиком вы задаёте угол и, возможно, силу прыжка. Далее используйте формулу
x = x0 + v*t + 1/2*a*t^2.
Киньте этот скрипт на объект с LineRenderer и посмотрите как он устроен.
using UnityEngine;
public class TrajectoryRenderer : MonoBehaviour {
public LineRenderer lineRenderer; // Ссылка на LineRenderer, который будет отображать траекторию
public Transform launchPoint; // Точка запуска
public float launchForce = 10f; // Сила запуска
public int resolution = 30; // Разрешение линии (количество точек)
private void Update() {
Vector3[] points = new Vector3[resolution];
lineRenderer.positionCount = resolution;
float launchAngle = Mathf.Deg2Rad * launchPoint.eulerAngles.z; // Угол запуска в радианах
Vector2 launchVelocity = launchForce * new Vector2(Mathf.Cos(launchAngle), Mathf.Sin(launchAngle)); // Начальная скорость
for (int i = 0; i < resolution; i++) {
float time = i / (float) resolution;
points[i] = CalculatePosition(time, launchVelocity);
}
lineRenderer.SetPositions(points);
}
Vector3 CalculatePosition(float time, Vector2 launchVelocity) {
// Вычисляем текущее положение с учётом гравитации
// Формула: P = P0 + V0*t + 1/2*a*t^2
// где P0 - начальное положение, V0 - начальная скорость, a - ускорение (гравитация), t - время
Vector2 position = (Vector2) launchPoint.position + launchVelocity * time + 0.5f * Physics2D.gravity * time * time;
return new Vector3(position.x, position.y, 0);
}
}
* поворот задаётся поворотом самой точки запуска