5327人加入学习
(15人评价)
3D数学基础:Unity游戏开发

制作于2018.2.4,基于Unity2017.2。

价格 ¥ 144.00
该课程属于 Unity - A计划(永久有效期) 请加入后再学习

### 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);

}

----

 

[展开全文]