### unity中的点和向量
vector2 vector3 分别用来表示二维 或 三维 的点或向量。
* transform.position transform所在对象在世界坐标系中的点的位置
* transform.forwoard 等相关值,是transform所在对象z正向在世界坐标系的单位向量
* 在unity中,用vector3来表示对象的位置
* 在unity中,*用vector3来表示物体移动的长度和方向*。
** update函数相当于差分,每帧移动ds距离
** 设匀速运动s=vt,则ds=v*dt,从t到t+1秒积分得:s=v,也就是说,累积一秒的若干帧更新,刚好走过了速度标定的距离,因此我们也把向量当作速度来用
*** update函数中的移动距离计算为:ds=time.deltatime*移动矢量,其中移动矢量是一秒物体移动的距离,也就是速度
* 在unity中,可以通过两个对象transform.position值相减得到的矢量的模,得到两个对象的距离
[source,csharp]
----
private Vector3 movingvect;
private bool movingSetted=false;
private float movingtime=3;
//set in inspector panel
public Transform target;
// Update is called once per frame
void Update()
{
//第一次,求移动矢量,也就是距离
if (movingSetted==false){
movingSetted=true;
movingvect=target.position-transform.position;
}
//距离足够小停止运动
var distanceVector=target.position-transform.position;
//模平方获得较好运行性能
if(Vector3.SqrMagnitude(distanceVector)>=0.1f)
transform.Translate(movingvect/movingtime*Time.deltaTime,Space.World);
}
----