Bootstrap

Unity开发中常用的基础3D数学(向量,点乘,叉乘,矩阵,四元数,欧拉角)

在看了很多文章和书籍直后发现Unity中的数学知识是很重要的,想要做到游戏的高真实度和高流畅度,数学是必不可少的,今天就来记录一下基础的3D数学在Unity中开发时的运用,若文章中所写有不足,欢迎指出留言,互相交流,感谢!

转载请标注转载地址


一、Unity中的向量

向量这个词大家应该不陌生,在数学里向量就是一个方向,没有大小,同样,在Unity中我们可以根据向量去获取方向。比如说,我想把a物体移动到b物体所在的位置,那么首先我们要做的就是先确定我们前进的方向,在确立了方向之后,就可以按照我们想要的速度向b目标点移动了,Unity中使用向量的加法来实现物体位移,代码如下:

    /// <summary>
    /// 向量的加法(从a位置移动到b位置)
    /// </summary>
    public void Add()
    {
        //先计算二者方向 
        Vector3 dir = (target.position - cube.position).normalized;
        //开始从a位置移动到b位置
        cube.position = cube.position + dir * Time.deltaTime * 3;
    }

其中,(target.forward - cube.forward)可以求得一个向量值,此处可以将该向量理解为有方向有大小的矢量,normalized表示该向量长度为1,向量没有大小,所以如果光是向量的话并不能完全表示朝向,将其大小设置为noemalized可以很好的表示出向量的朝向。

Unity中对于向量最好的一个例子是Vector3.Distance(),这个方法很常用,用来求得两个物体之间的距离,或者作为攻击范围等来使用,其实它的原理就是用两个向量相减求平方根得到的距离值,代码如下:

    /// <summary>
    /// 向量的减法(计算a,b两物体间的距离)
 

;