选择许多矢量和我的对象之间的最小角度

时间:2019-05-12 14:48:39

标签: c# unity3d

我有一个vector3数组:

Vector3[]points

我已经将目标位置存储在Vector3变量中:

Vector3 endPos

我需要获得Vector3数组中与目标点最小的角度,并返回具有最小角度的vector3的索引。

我正在考虑如何做几个小时,但我真的不知道怎么做。我仍然是一个新人(请使用C#)。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用Vector3.Angle()来获取两个Vector3之间的夹角,并在您的点上进行迭代,并将最小度及其索引存储在临时变量中。 像这样:

Vector3 endPos;
Vector3[] points;
private void SmallestAngle()
{
    if(points.Length <2)
    {
        Debug.LogError("There should be more than two points!");
        return;
    }
    float deg = float.PositiveInfinity;
    int index = 0;
    for (int i = 0; i < points.Length; i++)
    {

        float d = Vector3.Angle(points[i], endPos);
        if (d < deg)
        {
            deg = d;
            index = i;
        }
    }
    Debug.Log($"Smallest angle = {deg} / Index = {index}");
}