U2L1——Mathf
U2L1——Mathf
Mathf
-
Math
是 C# 封装好的用于数学计算的工具类 —— 位与System
命名空间中,即:System.Math
Mathf
是 Unity 中封装好的用于数学计算的工具结构体 —— 位于UnityEngine
命名空间中
他们都是提供来用于进行数学计算的
区别在于:
Mathf
和 Math
中的相关方法几乎一样
Math
是 C# 自带的工具类 提供一些数学相关的计算方法
Mathf
是 Unity 专门封装的,不仅包含 Math 中的方法 还多了一些适用于游戏开发的方法
所以在 Unity 开发里,使用 Mathf
中的方法用于数学计算即可
本章代码关键字
1 | Mathf.PI //π |
Mathf一般计算一次的常用方法
π
1 | print(Mathf.PI); |
绝对值
1 | print(Mathf.Abs(-10)); |
向上取整
只要有小数部分就加一的取整,无论小数部分有多小
1 | float f = 1.3f; |
向下取整
直接抛弃小数部分的取整,无论小数部分有多大
1 | print(Mathf.FloorToInt(9.6f)); //向下取整,直接抛弃小数部分 |
钳制函数
第一个参数是比较值,第二个参数是最小值,第三个参数是最大值
使输出值限定在一个范围内,小于最小值输出最小值,大于最大值输出最大值,介于两数之间输出比较值
1 | print(Mathf.Clamp(10, 11, 20)); //比最小值还小,输出最小值 |
最大值
可传入多个值,取其中最大值
1 | print(Mathf.Max(1, 2, 3, 4, 5)); |
最小值
可传入多个值,取其中最小值
1 | print(Mathf.Min(1.1f, 2, 3, 4, 5)); |
一个数的n次方
Mathf.Pow(a, b)
相当于
1 | print("一个数的n次方" + Mathf.Pow(4, 2)); |
四舍五入
1 | print("四舍五入" + Mathf.RoundToInt(1.3f)); |
一个数的平方根
1 | print("返回一个数的平方根" + Mathf.Sqrt(4)); |
判断一个数是否是2的n次方
1 | print("判断一个数是否是2的n次方" + Mathf.IsPowerOfTwo(4)); |
判断正负数
注意!返回值是-1f和1f,而不是bool值
1 | print("判断正负数" + Mathf.Sign(0)); |
Mathf一般要不停计算的常用方法
插值运算
假设是开始值,是目标值,是插值系数(这个系数必须是0~1),这Mathf中的每一次插值运算公式如下:
每次计算改变值或者值(改变不同的数,接近效果是不同的),最终会使值不断趋近于值
在Mathf里这个函数的定义如下:
1 | public static float Lerp(float a, float b, float t) |
插值运算用法1——先快后慢趋近
每帧改变start的值——变化速度是先快后慢,位置无限接近,但是不会得到end位置
1 | float start = 0; |
插值运算用法2——匀速接近
每帧改变t的值——变化速度是匀速,位置每帧接近,当t >= 1时,得到结果
1 | float start2 = 0; |
Mathf的三角函数
Mathf三角函数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!