一、获取一个向量(方向)
二、把获取到的向量normalized归一化,这个很重要。如果不normalized归一化,那么移动距离就会偏移。
向量归一化可以用比较通俗的话,比如B点到A点的方向: (-3.4, 2.5, -2.5),B点到A点的方向normalized归一化之后向量变成(-0.7, 0.5, -0.5)。我们物体的前方向是tranfrom.forward(0,0,1)如果我们乘以20那就是(0,0,20)Z轴方向增加20,
同样的如果我们的向量没有归一化,(-3.4, 2.5, -2.5)乘以20,就是(-68,50,-50),移动距离就会超过20。
三、自身坐标+(获取到的向量*距离)=终点(要移动的位置)
//获取B点到A点的方向 (A到B点的方向=B-A,B点到A点的方向=A-B)
Vector3 dir = targetTrans.position- transform.position;
// dir.normalized向量归一化,乘以距离,得到一个新的向量(Unity单位是米)
Vector3 moveDir = dir.normalized* distance;
//起点(自身位置)加上方向等于终点(要移动到的位置)
Vector3 moveToPos = transform.position + moveDir;
//绘制射线
Debug.DrawLine(transform.position, moveToPos, Color.red);
图示
获取一个B点A点的方向
向量与向量归一化之后的区别
向量归一化之后
向量没有归一化
向这个向量(方向)移动多少距离。
如图所示移动距离10米,两点距离是7.85米。射线的长度,略超过A点。通过射线的长度可以看出来。