本身在作游戏的忘记了Unity帮咱们提供计算两点之间的距离,在百度搜索了下。 ide
原来有一个公式本身就写了一个方法O(∩_∩)O~,到僵尸到达某一个点以后就向另外一个奔跑过去idea
/// <summary> /// 3维中如何计算两点之间的距离 /// </summary> /// <param name="p1"></param> /// <param name="p2"></param> /// <returns></returns> private float TwoPointDistance3D(Vector3 p1, Vector3 p2) { float i = Mathf.Sqrt((p1.x-p2.x) * (p1.x-p2.x) + (p1.y - p2.y) * (p1.y - p2.y) + (p1.z - p2.z) * (p1.z - p2.z)); return i; } /// <summary> /// 2维中如何计算两点之间的距离 /// </summary> /// <param name="p1"></param> /// <param name="p2"></param> /// <returns></returns> private float TwoPointDistance2D(Vector2 p1, Vector2 p2) { float i = Mathf.Sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)); return i; }
数学公式:spa
欧氏距离定义: 欧氏距离( Euclidean distance)是一个一般采用的距离定义,它是在m维空间中两个点之间的真实距离。
在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是
d = sqrt((x1-x2)^+(y1-y2)^)
三维的公式是
d=sqrt(x1-x2)^+(y1-y2)^+(z1-z2)^)
推广到n维空间,欧式距离的公式是
d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n
xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
n维欧氏空间是一个点集,它的每一个点能够表示为(x(1),x(2),...x(n)),其中x(i)(i=1,2...n)是实数,称为x的第i个坐标,两个点x和y=(y(1),y(2)...y(n))之间的距离d(x,y)定义为上面的公式.
欧氏距离看做信号的类似程度。 距离越近就越类似,就越容易相互干扰,误码率就越高 code