很有意思的Mathf功能

这篇博客详细介绍了Unity中的Mathf函数,包括Abs、Approximately、Ceil、Floor、Round等,以及Max、Min、Clamp等操作。还讨论了Lerp、InverseLerp、MoveTowards等插值和移动函数,以及Pow、Sqrt、PingPong和Repeat等高级用法,对于理解和使用Unity中的数学运算非常有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mathf.Abs 绝对值

返回指定参数 f 绝对值

Debug.Log(Mathf.Abs(-3));	// Prints 3

Mathf.Approximately 近似

如果a和b相似,则返回true。

if (Mathf.Approximately(1.0f, 10.0f / 10.0f))	//sometimes return true;

Mathf.Ceil 向上取整

Debug.Log(Mathf.Ceil(10.0F));	// Prints 10
Debug.Log(Mathf.Ceil(10.2F));	// Prints 11
Debug.Log(Mathf.Ceil(10.7F));	// Prints 11
Debug.Log(Mathf.Ceil(-10.0F));	// Prints -10
Debug.Log(Mathf.Ceil(-10.2F));	// Prints -10
Debug.Log(Mathf.Ceil(-10.7F));	// Prints -10

Mathf.Floor 向下取整

Debug.Log(Mathf.Floor(10.0F));   // Prints  10
Debug.Log(Mathf.Floor(10.2F));   // Prints  10
Debug.Log
### 关于 C# 中 Mathf 的使用 在 C# 编程中,`Mathf` 并不是标准库的一部分,而是 Unity 游戏开发框架中的一个类[^2]。它提供了许多用于数学计算的静态方法和常量,这些功能特别适用于游戏开发场景下的数值操作。 #### Mathf 的主要特性 - `Mathf` 是专门为单精度浮点数 (`float`) 设计的工具集。 - 它包含了常见的数学函数,例如取整、三角函数、指数运算等。 - 提供了一些常用的数学常量,比如 π 和 ε (最小正数)[^3]。 以下是几个常用的方法及其说明: #### 取整操作 1. **Round**: 将给定的浮点数四舍五入到最接近的整数。 ```csharp float value = 10.5f; int roundedValue = Mathf.RoundToInt(value); // 结果为 10 ``` 2. **Floor**: 返回不大于指定数字的最大整数部分。 ```csharp float value = 10.9f; int flooredValue = Mathf.FloorToInt(value); // 结果为 10 ``` 3. **Ceil**: 返回不小于指定数字的最小整数部分。 ```csharp float value = 10.1f; int ceiledValue = Mathf.CeilToInt(value); // 结果为 11 ``` #### 数学运算 除了基本的取整外,`Mathf` 还支持多种数学运算: 1. **Clamp**: 将某个值限制在一个范围内。 ```csharp float clampedValue = Mathf.Clamp(15, 10, 20); // 结果为 15 ``` 2. **Lerp**: 执行线性插值,在两个值之间平滑过渡。 ```csharp float interpolatedValue = Mathf.Lerp(0, 10, 0.5f); // 结果为 5 ``` 3. **Sin/Cos/Tan**: 计算角度对应的三角函数值(输入单位为弧度)。 ```csharp float sineValue = Mathf.Sin(Mathf.PI / 2); // 结果约为 1 ``` #### 常见示例代码 下面是一个综合使用的例子,展示如何利用 `Mathf` 实现简单的物理模拟效果: ```csharp using UnityEngine; public class Example : MonoBehaviour { void Update() { float angle = Time.time * Mathf.PI; // 时间转换成弧度制的角度 Vector2 position = new Vector2( Mathf.Cos(angle), // X 轴上的余弦波形运动 Mathf.Sin(angle) // Y 轴上的正弦波形运动 ); transform.position = (Vector3)position; // 更新物体位置 } } ``` --- ### 注意事项 虽然 `Mathf` 面向的是 `float` 类型的数据处理需求,但如果需要更高精度的支持,则可以考虑使用 .NET 自带的 `System.Math` 库来完成类似的计算任务[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值