一、Math和Mathf的区别:
Math是C#官方提供的数学计算的工具类,而Mathf是Unity提供的数学计算结构体。Mathf中包含了几乎所有Math中的数学计算方法,同时还额外添加了一些适用于游戏开发的数学计算方法。
二、Mathf的一些常用函数:
0.Mathf.CeilToInt:
返回最小的整数大于或等于f。
// Prints 10 Debug.Log(Mathf.CeilToInt(10.0));
// Prints 11 Debug.Log(Mathf.CeilToInt(10.2));
// Prints 11 Debug.Log(Mathf.CeilToInt(10.7));
// Prints -10 Debug.Log(Mathf.CeilToInt(-10.0));
// Prints -10 Debug.Log(Mathf.CeilToInt(-10.2));
// Prints -10 Debug.Log(Mathf.CeilToInt(-10.7));
1.Mathf.Clamp限制:
Mathf.Clamp(value,min,max);
把value的值限定在min和max之间。如果value小于min,则返回min;如果value大于max,则返回max;否则返回value。
2.Mathf.Clamp01限制0~1:
Mathf.Clamp01(float value);
把value的值限定在0和1之间并返回value。如果value小于0,返回0.如果value大于1,返回1;否则返回value。
3.Mathf.Lerp插值:
Mathf.Lerp(float a,float b,float t);
数学公式:result=a+(b-a)*t;其中t为插值系数,取值范围0~1;
当t=0时返回a,当t=1时返回b。当t=0.5时返回a和b的平均值
4.Mathf.Pow 次方
Mathf.Pow(float a, float b);
返回a的b次方。
5.Mathf.Sqrt 平方根
Mathf.Sqrt(float a);
返回a的平方根(开根号)。
6.Mathf.Abs 绝对值
Mathf.Abs(a);
返回a的绝对值。
7.Mathf.Max 最大值(Mathf.Min 最小值同理)
Mathf.Max (float a,float b);
Mathf.Max (values[]) ;
返回两个或更多值中最大的值。
8.Mathf.Round 四舍五入
Mathf.Round (float a);
PS:与Math函数的传两个参数不同,此函数只能四舍五入取整,不能设置精度保留位数。
9.Mathf.Ceil 向上取整
Mathf.Ceil(float a);
返回大于或等于a的最小整数。例如1.1返回2;-1.1返回-1。
10.Mathf.Floor 向下取整
Mathf.Floor(float a);
返回小于或等于a的最大整数。例如1.6返回1;-1.6返回-2。
11.Mathf.MoveTowards 均匀平移
Mathf.MoveTowards(float current, float target, float maxDelta);
Mathf.MoveTowards方法的功能是返回一个浮点数,其值为current向target靠近的一个值。靠近多少的值由maxDelta决定。
PS:
若maxDelta < 0,则返回的浮点数将从current开始远离target;
若maxDelta >= target,由于返回的浮点数最大只能为target,故返回的浮点数为target;
例如:a = Mathf.MoveTowards(a, 20, 3); 若 a 的初始值为0,运行一次a的值变为3,再运行一次变为6,再运行一次变为9,直至20停止。
12.Mathf.Repeat 重复
Mathf.Repeat(float t,float length);
循环值t,使输出小于length,并且大于等于0,即取值在 [ 0,length ) 之间。
for (int i = 0; i < 9; i++)
{
Debug.Log(Mathf.Repeat(i, 3));
}//输入123456789,输出012012012
13.Mathf.PingPong 乒乓(来回移动)
Mathf.PingPong(float t,float length);
循环值t,使输出大于等于0,小于等于length。返回值将在 [ 0,lenght ] 之间来回移动。
for (int i = 0; i < 9; i++)
{
Debug.Log(Mathf.PingPong(i, 3));
}//输入123456789,输出012321012