在看了很多文章和书籍直后发现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两物体间的距离)