关于Mathf和Math
Unity 的 Mathf类提供了一组常见的数学函数,包括三角函数、对数函数以及游戏和应用开发中常用的其他函数。Unity 的 Math类为三角函数、对数函数和其他通用数学函数提供常数和静态方法。
Mathf是Unity中封装好的用于数学计算的工具结构体,位于UnityEngine的命名空间内;Math是C#中封装好的用于数学计算的工具类,位于System的命名空间内,他们都是提供用来进行数学相关计算的静态的工具结构体和工具类。
Math和Mathf的相关方法相似度非常高,Math是C#自带的工具类,主要提供一些数学相关的计算方式,而Mathf是Unity专门封装的,它不仅包含了Math中的方法,还多了一些适用于游戏开发的方法,所以我们在进行Unity游戏的时候,大多会使用Mathf中的方法进行数学计算。
Math类定义的常数有Math.PI(获取PI的值)和Math.E(获取E的值),而Mathf的常用方法一般只计算几次,例如Mathf.PI(获取PI的值)、Mathf.Abs()(获取绝对值)、Mathf.Max()(获取最大值)、Mathf.Pow()(获取一个数的N次幂)等,当然,Mathf中也有不停计算的方式,比如插值运算-Lerp。
Lerp的函数公式为:
result=Mathf.Lerp(start,end,t);//start为开始值,end为结束值,t为插值系数,取值范围为0-1
插值运算有两个用法
用法一:每帧都会改变start的值,变化速度先快后慢,位置无限接近于结果值,但是不会得到结果值的位置
start=Mathf.Lerp(start,10,Time.deltaTime);
用法二:每帧都会改变t的值,变化速度保持匀速,位置每帧接近于结果值,当差值系数大于等于一时,得到结果
time+=Time.deltaTme; Result=Mathf.Lerp(start,10,time);
我们可以在一个物体跟随另一个物体移动的时候使用该函数从而得到想要的效果。