抄的Unity的源码
HandleUtility.DistancePointLine 是UnityEditor代码,源码如下,这样就可以在Runtime中运行
注意性能开销!
/// <summary> /// 计算点到线段的最短距离 /// </summary> /// <param name="point"></param> /// <param name="lineStart"></param> /// <param name="lineEnd"></param> /// <returns></returns> public static float DistancePointLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd) { Vector3 rhs = point - lineStart; Vector3 vector3 = lineEnd - lineStart; float magnitude = vector3.magnitude; Vector3 lhs = vector3; if ((double) magnitude > 9.99999997475243E-07) lhs /= magnitude; float num = Mathf.Clamp(Vector3.Dot(lhs, rhs), 0.0f, magnitude); Vector3 v3 = lineStart + lhs * num; return Vector3.Magnitude (v3 - point); }
原文:https://www.cnblogs.com/sanyejun/p/14850354.html