3.png

Debug.Log("角度变弧度:" + Mathf.Deg2Rad);
Debug.Log("弧度变角度:" + Mathf.Rad2Deg);
Debug.Log("圆周率:" + Mathf.PI);
Debug.Log("无限小的小数(正数):" + Mathf.Epsilon);
Debug.Log("无限大的数(正数):" + Mathf.Infinity);
Debug.Log("无限小的数(负数)" + Mathf.NegativeInfinity);

//静态方法
Debug.Log("返回参数的符号,正数和0返回1,负数返回-1:" + Mathf.Sign(-10) + ":::" + Mathf.Sign(10));
Debug.Log("求绝对值:" + Mathf.Abs(-10));  //print 10 
Debug.Log("五舍六入(float类型):" + Mathf.Round(10.5f) + ":::" + Mathf.Round(10.6f));
Debug.Log("五舍六入(int类型):" + Mathf.RoundToInt(-10.5f) + ":::" + Mathf.RoundToInt(-10.6f));
Debug.Log("比较两个浮点数的相似度:" + Mathf.Approximately(2.0f, 2.001f));  //print true/false
Debug.Log("向上取整(返回float类型):" + Mathf.Ceil(0.6f));
Debug.Log("向上取整(返回int类型):" + Mathf.CeilToInt(5.3f));
Debug.Log("向下取整(返回float类型):" + Mathf.Floor(0.6f));
Debug.Log("向下取整(返回int类型):" + Mathf.FloorToInt(1.6f));
Debug.Log("限定方法:" + Mathf.Clamp(11, 10, 12)); //将第一个参数限定在第二个参数和第三个参数之间
Debug.Log("限定方法01:" + Mathf.Clamp01(0.5f)); //将第一个参数限定在0-1之间
Debug.Log("返回距离value最近的2的次方数。:" + Mathf.ClosestPowerOfTwo(5)); //此时应该返回4
Debug.Log("检测是否为2的N次方数:" + Mathf.IsPowerOfTwo(8));  //返回true/false
Debug.Log("输出下一个最近的2的N次方数:" + Mathf.NextPowerOfTwo(129));
Debug.Log("计算两个角度的最短距离:" + Mathf.DeltaAngle(1080, 90));  //1080即0度  所以二者之间最短距离为90-0 = 90度
 //对数和次方数
Debug.Log("计算参数a的b次方:" + Mathf.Pow(6f, 2f));
Debug.Log("计算平方根:" + Mathf.Sqrt(4));
Debug.Log("e的N次方:" + Mathf.Exp(6));  //e:自然常数e(约为2.71828)
Debug.Log("对数运算:" + Mathf.Log(6, 2)); // 以6为真数,2为底数的对数
Debug.Log("对数运算(只有一个参数):" + Mathf.Log(6)); // 当只有一个参数时,默认以e为底
Debug.Log("以10为底的对数运算:" + Mathf.Log10(100));
//插值运算部分(先加速后减速运动)
Debug.Log("反插值(返回参数c在参数ab之间的比例):" + Mathf.InverseLerp(2f, 8f, 5f));  //5在2和8之间的比例为0.5
Debug.Log("插值(每次返回参数c在参数ab之间的比例值):" + Mathf.Lerp(1f, 10f, 0.8f));  //print 8.2   (10-1)*0.8 = 7.2+1 = 8.2
Debug.Log("针对角度的插值运算:" + Mathf.LerpAngle(0.0f, 90.0f, 0.5f));  ///返回45度
Debug.Log("线性插值在a和b之间,不受t的限制,可以跳到ab范围的外面去:" + Mathf.LerpUnclamped(0.5f, 9.0f, 1.6f));
//匀速移动
Debug.Log("从起点按比例增加一直到终点为止:" + Mathf.MoveTowards(3.0f, 10.0f, 1.5f));  //第一次返回1+2=3
Debug.Log("角度匀速增加:" + Mathf.MoveTowardsAngle(30.0f, 90.0f, 10.0f));
//来回运动
Debug.Log("参数a在长度之间来回变化" + Mathf.PingPong(1.0f, 10.0f));  // 此处参数t在1-10之间来回变化(需要放在update里面)
Debug.Log("来回循环" + Mathf.Repeat(1.0f, 5.0f));  //在1-5之间来回循环   和Mathf.PingPong的差异 暂时不清楚

//Perlin Noise的特点是:返回值随着x,y坐标的移动,是连续且平缓的变化的随机值,这点和Random是完全不同的,而且这个特点非常重要,应用范围很广。可以想象,把x或者y的值随着时间去改变,会得到动态变化的一系列数值。
Debug.Log("随着两个参数的变化会生成一张变化的图像" + Mathf.PerlinNoise(0.5f, 0.5f));

//返回最大值和最小值(可以使用int&float类型),可以从两个值或者数组中获取最值
Debug.Log("返回最大值:" + Mathf.Max(2.0f, 3.6f));
int[] i = { 5, 9, 6, 3, 45, 8, };
Debug.Log("返回最大值:" + Mathf.Max(i));
Debug.Log("返回最小值:" + Mathf.Min(2.0f, 3.6f));
int[] ii = { 5, 9, 6, 3, 45, 8, };
Debug.Log("返回最小值:" + Mathf.Min(ii));

//平滑插值
Debug.Log("平滑插值:和lerp类似,在最小和最大值之间的插值,并在限制处渐入渐出" + Mathf.SmoothStep(1.0f, 10.0f, 0.95f));
//随着时间的推移逐渐改变一个给定的角度到期望的角度
//Debug.Log("平滑阻尼角度:"+ Mathf.SmoothDampAngle(current: float, target: float, ref currentVelocity : float, smoothTime: float, maxSpeed: float = Mathf.Infinity, deltaTime: float = Time.deltaTime));
//平滑阻尼:随着时间的推移逐渐改变一个值到期望值。
//Mathf.SmoothDamp(current: float, target: float, ref currentVelocity : float, smoothTime: float, maxSpeed: float = Mathf.Infinity, deltaTime: float = Time.deltaTime)

//Unity5.6支持的一个方法,通过温度单位开尔文来表示RGB
//print(Mathf.CorrelatedColorTemperatureToRGB(float kelvin))   kelvin取值1000-40000
//5.6支持的方法   将给定值从伽玛(sRGB)转换为线性颜色空间。
//Mathf.GammaToLinearSpace(float value);
//5.6支持的方法   将给定的值从线性转换为伽玛 (sRGB) 颜色空间。
//Mathf.LinearToGammaSpace(float value);

//正反余弦,正弦,正切等
//反余弦值 反正弦值  反正切值  反正切2   注意参数都是弧度
print(Mathf.Acos(1f));
print(Mathf.Asin(1f));
print(Mathf.Atan(1f));
print(Mathf.Atan2(1f, 2f));
//余弦  正弦  正切    注意参数都是弧度,可以考虑通过Mathf的静态变量来切换弧度和角度
print(Mathf.Cos(0.5f));
print(Mathf.Sin(Mathf.Deg2Rad * 30));  //求sin(30)  即0.5
print(Mathf.Tan(0.5f));

Debug.Log("反插值(返回参数c在参数ab之间的比例):" + Mathf.InverseLerp(2f, 8f, 5f));  //5在2和8之间的比例为0.5
Debug.Log("插值(每次返回参数c在参数ab之间的比例值):" + Mathf.Lerp(1f, 10f, 0.8f));  //print 8.2   (10-1)*0.8 = 7.2+1 = 8.2
Debug.Log("针对角度的插值运算:" + Mathf.LerpAngle(0.0f, 90.0f, 0.5f));  ///返回45度
Debug.Log("线性插值在a和b之间,不受t的限制,可以跳到ab范围的外面去:" + Mathf.LerpUnclamped(0.5f, 9.0f, 1.6f));
//匀速移动
Debug.Log("从起点按比例增加一直到终点为止:" + Mathf.MoveTowards(1.0f, 10.0f, 2.0f));  //第一次返回1+2=3
Debug.Log("角度匀速增加:" + Mathf.MoveTowardsAngle(30.0f, 90.0f, 10.0f));
//来回运动
Debug.Log("参数a在长度之间来回变化" + Mathf.PingPong(1.0f, 10.0f));  // 此处参数t在1-10之间来回变化(需要放在update里面)
Debug.Log("来回循环" + Mathf.Repeat(1.0f, 5.0f));  //在1-5之间来回循环   和Mathf.PingPong的差异 暂时不清楚

标签: Mathf

添加新评论