获得基于顶点和点的抛物线/弧

时间:2014-07-10 00:38:03

标签: c# unity3d algebra projectile

我试图让一个角色在目标身上投掷弧线。

我知道顶点(x,y)和目标(x,y),我想得到一个从原点(x,y)到顶点最大高度的目标的弧.y

我所拥有的是基于y = a(x-h)^ 2 + k的顶点形式

public static Vector3 parabola(Vector2 origin, Vector2 target, float height)
{
    float dist = target.x - origin.x;
    Vector2 vertex = new Vector2(origin.x + (dist / 2), origin.y + height);

    //a = (y-k) / (x-h)^2
    float a = (target.y - vertex.y) / ((target.x - vertex.x) * (target.x - vertex.x));

    //b = (-h + -h) * a
    float b = (-vertex.x + -vertex.x) * a;

    //c = (h * h) * a + k
    float c = (vertex.x * vertex.x) * a + vertex.y;

    return new Vector3(a, b, c);        
}

    x += Time.DeltaTime;
    float yPos = a * ((x - h) * (x - h)) + k;

这不会产生正确的弧。它通常太陡或太浅。我的代数是错的,还是我使用了错误的方法?

由于

1 个答案:

答案 0 :(得分:0)

这是一个很好的解决方案:Wiki:Trajectory of a projectile

enter image description here