/// <summary> /// 返回两个单位的距离 /// </summary> /// <param name="a">单位a</param> /// <param name="b">单位b</param> /// <returns>单位间的距离</returns> public static float Distance(ObjectUnit a, ObjectUnit b) { float m = 0; if (a.Model != null) { m += a.Model.TransformedMajorSphere.Radius; } if (b.Model != null) { m += b.Model.TransformedMajorSphere.Radius; } return(MathHelper.Clamp(Vector3.Distance(a.Position, b.Position) - m, 0, float.MaxValue)); }
/// <summary> /// 获得目标相对于源单位前方的夹角的COS值 /// </summary> /// <param name="o">源单位</param> /// <param name="target">目标</param> /// <returns>夹角的COS值</returns> public static float AngleCos(ObjectUnit o, ObjectUnit target) { return(Vector3.Dot(o.Face, Vector3.Normalize(target.Position - o.Position))); }