目录
1 用法一(每帧改变start的值--变化速度先快后慢,最终位置无限接近end位置,但是不等于end.
2 用法二(每帧改变t的值--变化速度匀速,位置每帧接近,当t>=1时,得到结果
1.Math和Mathf
Math是C#中封装好的用于数学计算的工具类(位于System命名空间中).
Mathf是Unity中封装好的用于数学计算的工具结构体(位于UnityEngine命名空间中)。
它们都是提供来用于数学相关计算的。
2.区别
Math是C#自带的工具类,主要就提供一些数学相关计算方法。
Mathf是Unity专门封装的,不仅包含Math中的方法,还多了一些适用于游戏开发的方法。
所以我们在游戏开发中使用Mathf中的方法即可。
3.Mathf中的常用方法(一般计算一次)
1 Π-PI
里面储存了其值,可以通过下列方法得到其较为准确的值。
print(Mathf.PI);
2 取绝对值-Abs
print(Mathf.Abs(-10));
3 向上取整-CeilToInt
使用强行转换时,是向下取整的。
float f=1.3f;
int i=(int) f;
print(i);
使用Mathf方法向下取整
print(Mathf.CeilToInt(f));
4 向下取整-FloorToInt
print(Mathf.FloorToInt(9.6f));
5 钳制函数/夹紧函数-Clamp
print(Mathf.Clamp(10,11,20));
6 获取最大值-Max
print(Mathf.Max(1,2));
7 获取最小值
print(Mathf.Min(1,2,3,4));
print(Mathf.Min(1.1f,1.2f));
8 一个数的n次幂-Pow
print(Mathf.Pow(4,2));
//两个参数的意思为:(以上述代码为例,意思是四的平方)
9 四舍五入-RoundToInt
print(Mathf.RoundToInt(1.3f));
10 返回一个数的平方根-Sqrt
print(Mathf.Sqrt(4));
11 判断一个数是否是2的n次方-IsPowerOfTwo
print(Mathf.IsPowerOfTwo(4));
//返回值为bool类型,返回true或者false
12 判断正负数-Sign
print(Mathf.Sign(0));
//其输出结果:0或者正数就返回1,负数就返回-1
4.Mathf中的常用方法(不停的运算)
插值运算-Lerp,其公式为:
result=Mathf.Lerp(start,end,t);(其中t为插值系数,取值范围为0-1)
result=start+(end-start)*t;
1 用法一(每帧改变start的值--变化速度先快后慢,最终位置无限接近end位置,但是不等于end.
start=Mathf.Lerp(start,10,Time.deltaTime);
2 用法二(每帧改变t的值--变化速度匀速,位置每帧接近,当t>=1时,得到结果
time+=Time.deltaTime;
result=Mathf.Lerp(start,10,time);