/// <summary> /// 从列表points中获取距离targetPoint最近的坐标 /// </summary> /// <param name="points"></param> /// <param name="targetPoint"></param> /// <returns></returns> public Vector3 FindClosestPoint(List<Vector3> points, Vector3 targetPoint) { Vector3 closestPoint = Vector3.zero; float closestDistance = Mathf.Infinity; foreach (Vector3 point in points) { float distance = Vector3.Distance(point, targetPoint); if (distance < closestDistance) { closestDistance = distance; closestPoint = point; } } return closestPoint; }
/// <summary> /// 获取_angleList中最接近angle的角度 /// </summary> /// <param name="_angleList">所有正对按钮时的角度</param> /// <param name="_angle">rot当前的角度</param> /// <returns></returns> public float Closest(List<float> _angleList, float _angle) { float closest = _angleList[0]; float difference = Mathf.Abs(closest - _angle); foreach (float item in _angleList) { float currentDifference = Mathf.Abs(item - _angle); if (currentDifference < difference) { closest = item; difference = currentDifference; } } return closest; }