1.得到曲线上的点坐标
public static Vector2[] ProjectileArcPoints(int iterations, float speed, float distance, float gravity, float angle)
{
float iterationSize = distance / iterations;
float radians = angle;
Vector2[] points = new Vector2[iterations + 1];
for (int i = 0; i <= iterations; i++)
{
float x = iterationSize * i;
float t = x / (speed * Mathf.Cos(radians));
float y = -0.5f * gravity * (t * t) + speed * Mathf.Sin(radians) * t;
Vector2 p = new Vector2(x, y);
points[i] = p;
}
return points;
}
注意得到的点的x是unity的Z
2.用LineRender来做可视化
public void UpdateArc(float speed, float distance, float gravity, float angle, Vector3 direction, bool valid)
{
Vector2[] arcPoints = ProjectileMath.ProjectileArcPoints(iterations, speed, distance, gravity, angle);
Vector3[] points3d = new Vector3[arcPoints.Length];
for (int i = 0; i < arcPoints.Length; i++)
{
points3d[i] = new Vector3(0, arcPoints[i].y, arcPoints[i].x);
}
lineRenderer.positionCount = arcPoints.Length;
lineRenderer.SetPositions(points3d);
transform.rotation = Quaternion.LookRotation(direction);
}
3.怎么让LineRender是一段一段的
Tiling x可以控制线段的长度
🙏地爆天星!