UnityAPI的学习——Mathf类

这篇具有很好参考价值的文章主要介绍了UnityAPI的学习——Mathf类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Mathf类是Unity中的数学类,属于结构体类型,只有静态属性和静态方法,即不可实例化。

Mathf类静态属性

在Mathf类中,涉及的静态属性有Deg2Rad、Rad2Deg和Infinity,其中属性Deg2Rad和Rad2Deg功能相似。

1、Deg2Rad属性:从角度到弧度常量
基本语法

public const float Deg2Rad=0.1f;

功能说明:此属性用来表示数学计算中从角度到弧度转变的常量值,其值为(2*Mathf.PI)/360=0.01745329,此属性只读

Rad2Deg属性与此属性功能相反,是从弧度到角度的转换常量值,其值为57.2958f

2、Infinity属性:正无穷大
基本语法

public const float Infinity=1.0f/0.0f

功能说明 :此属性用来表示在数学计算中的正无穷大,只读。

Mathf类静态方法

在Mathf类中,涉及的静态方法有Clamp方法、ClosestPowerOfTwo方法、DeltaAngle方法、InverseLerp方法、Lerp方法、LerpAngle方法、MoveToWard方法、MoveTowardsAngle方法、PingPong方法、Repeat方法、Round方法、SmoothDamp方法、SmoothDampAngle方法和SmoothStep方法

1、Clamp方法:返回有限范围值
基本语法

public static float Clamp(float value ,float min ,float max);
其中参数min为返回值的最小值,参数max为返回值的最大值。参数和返回值类型为浮点型

public static int Clamp(int value ,int min ,int max);
其中参数min为返回值的最小值,参数max为返回值的最大值,参数和返回值类型为整型

功能说明: 此方法用来返回有范围限制的value值,当value在[min , max]时返回value值;当value<min时返回min值;当value>max时返回值。

Clamp01的取值范围为[0,1],只有一个参数

2、ClosestPowerOfTwo方法:返回2的某次幂
基本语法

public static int ClosestPowerOfTwo(int value);

功能说明 此方法用于返回最接近参数值value的2的某次幂的值。当value属于中间值时取较大值
例如:
f=Mathf.ClosestPowerOfTwo(11) ,则f=8;
f=Mathf.ClosestPowerOfTwo(12),则f=16
当value值小于0时,返回值为0

3、DeltaAngle方法:最小赠量角度
基本语法

public static float DeltaAngle(float current ,float target);
其中参数current为当前角度,参数target为目标角度

功能说明 此方法用于返回从参数值current到target的最小增量角度值

4、InverseLerp方法:计算比例值
基本语法

public static float InverseLerp(float from,float to ,float value)
其中参数from 为起始值,参数to为终点值,参数value为参考值

功能说明:此方法用来返回value值在从参数from到to中的比例值。

5、Lerp方法:线性插值
基本语法

public static float Lerp(float from ,float to ,float t);
其中参数from为线性插值的起始值,参数to为线性插值的结束值,参数t为插值系数

功能说明
此方法的功能是用来返回一个从from到to范围的线性插值。返回值的计算方法为(to-from)*t+from,其中:
1、参数t的有效取值范围为[0,1],当t<0时有效值t=0,当t>1时有效值t=1;
2、参数from和to为任意的float数值,from和to之间没有任何约束关系,from的值可以大于to也可以小于to。

6、MoveTowards方法:选择性插值
基本语法

public static float MoveTowards(float current , float target ,float maxDelta);

功能说明 此方法的功能是返回一个从current到target之间的插值,返回值受maxDelta值的约束。
此方法的功能是返回一个从current到target之间的插值,返回值受maxDelta值的约束。

返回值计算方式
1、若a<b:当a+d<b时 ,c=a+d:当a+d>b时 ,c=b
2、若a>b:当a-d>b时 , c=a-d: 当a-d<b时 ,c=b

7、MoveTowardsAngle方法:角度的选择性插值
基本语法

 public static float MoveTowardsAngle(float current ,float target ,float maxDelta)

功能说明 此方法的作用是返回一个从当角度current向目标角度target旋转的插值,每帧旋转角度不超过maxDelta度。

8、PingPong方法:往复运动
基本语法

public static float PingPong(float t,float length);

功能说明
此方法用于模拟乒乓球的往复运动。设f=Mathf.PingPong( t ,1),其中f、t和1均为float类型数值。

9、Repeat方法:取模运算
基本语法

public static float Repeat(float t , float length);

功能说明
此方法的作用类似于浮点数的取模运算

10、Round方法:浮点数的整型值
基本语法

public static float Round(float t)

功能说明
此方法作用是返回离f最近的整型浮点值

11、SmoothDamp方法:模拟阻尼运动

1public static float SmoothDamp(float current ,float target ,ref float current Velocity , float smoothTime);
2public static float SmoothDamp(float current ,float target ,ref float current Velocity , float smoothTime )
3public static float SmoothDamp(float current ,float target ,ref float current Velocity , float smoothTime ,float maxSpeed ,float deltaTime);

current:起始值
target:目标值
currentVelocity:当前帧速度
ref:参数smoothTime为预计平滑时间
maxSpeed:当前帧最大速度值,默认值为Mathf.Infinity
deltaTime:为平滑时间,值越大返回值也相对越大,一般用Time.deltaTime计算

功能说明:
此方法的功能是模拟平滑阻尼运动,并返回模拟插值。smoothTime:float ,预计平滑时间,物体越靠近目标,加速度的绝对值越小。实际到达目标的时间往往要比预计时间大很多,建议smoothTime的取值范围为(0.0f ,1.0f),若想控制物体到达目标的时间可以通过控制maxSpeed来达到目标。maxSpeed:float = Mathf.Infinity ,每帧返回值的最大值,默认值为Mathf.Infinity.

12、SmoothDampAngle方法:阻尼旋转
基本语法

1public static float SmoothDampAngle(float current ,float target ,ref float current Velocity , float smoothTime);
2public static float SmoothDampAngle(float current ,float target ,ref float current Velocity , float smoothTime )
3public static float SmoothDampAngle(float current ,float target ,ref float current Velocity , float smoothTime ,float maxSpeed ,float deltaTime);

功能说明:
此方法的功能是模拟角度的平滑阻尼旋转,并返回模拟插值

13、SmoothStep方法:平滑插值
基本语法

public static float SmoothStep(float from , float to ,float t);
其中参数from为起始值,参数to为结束值,参数t为插值系数

功能说明
此方法的功能是返回一个从from 到 to 的平滑插值
1、参数from和to是两个任意的float类型数值,它们之间没有任何大小约束关系,from可以大于to也可以小于to
2、插值系数t的有效范围为[0.0f ,1.0f],当t<0时其有效值 t 为0.0f ,当t>1时其有效值t为1.0f文章来源地址https://www.toymoban.com/news/detail-849119.html

到了这里,关于UnityAPI的学习——Mathf类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3D学习记录02——PloyBrush场景搭建

    首先在Window-Package Manager里面搜索Poly Brush,下载后将URP的Shader样例导入  导入后Asset文件夹下会有Sample的文件夹,在菜单栏 Tools-PolyBrush-PolyBrush Window 打开窗口 这个窗口最上面的五个,第一个是用来调整地形高低的,第二个是进行柔化场景的,第三个是调整颜色的, 第四个可以

    2024年02月08日
    浏览(60)
  • Unity3D学习笔记8——GPU实例化(3)

    在前两篇文章《Unity3D学习笔记6——GPU实例化(1)》《Unity3D学习笔记6——GPU实例化(2)》分别介绍了通过简单的顶点着色器+片元着色器,以及通过表面着色器实现GPU实例化的过程。而在Unity的官方文档Creating shaders that support GPU instancing里,也提供了一个GPU实例化的案例,这里就详

    2023年04月22日
    浏览(46)
  • [Unity] 使用Mathf函数实现平滑移动物体的7种方法

     Unity中要利用Mathf中的函数实现物体的平滑运动,有以下7种方法: Mathf.SmoothDamp、Mathf.Lerp、Mathf.SmoothStep三个方法非常相似,分别使用三个方法移动同一个物体的效果如图所示: 可以看出,三者均是先快后慢,但SmoothDamp方法会有一些卡顿;SmoothStep与Lerp比较起来,Mathf.Smooth

    2024年02月12日
    浏览(52)
  • Unity3D学习-Day01-环境搭建及学习资源导入

    版本选择可以最新,但是不能太老。因为很多资源都只兼容后续版本。 总体步骤可以概括为: 一:安装 1.下载 Unity Hub 2.下载最新的 Unity Personal 正式版 3.登录 Unity ID 4.安装编辑器时,保持默认安装选项。(尽量选择LTS的,我选择的是2020.3.4) 二:导入 1.下载项目 2.使用 Unit

    2024年02月07日
    浏览(79)
  • Unity3D学习 ② 物体的正常跳跃、二段跳、冲刺

    限制物体在按下跳跃键的时候只能跳跃一次。而不是能够无限跳跃。 具体实现思路是:给地面设置标签,检测物体是否和地面碰撞。 1.1.1 地面(plane)标签设置 我们为了物体能够正常跳跃,需要给地面添加一个标签。 点击地面plane 再点击 tag 下面的AddTag选项 在AddTag页面点击➕

    2023年04月08日
    浏览(88)
  • Unity3D学习记录03——Navigation智能导航地图烘焙

    首先还是在Package Manager中安装AI Navigation 接着选择我们场景的地面,右键,找到AI的NavMesh Surface,它会为我们的Ground添加一个叫NavMesh Surface的子物体 在Inspector窗口中可以看到它的详细的参数: 图中的R,H为你人物的参数,45°为你的人物可以爬行的最大角度 Agent Type里面可以改

    2024年02月08日
    浏览(55)
  • Unity3D学习记录01:URP渲染管线以及3D游戏场景设置

    以下内容所使用的版本均为Unity2022.3 先在 Window-Package Manager-Unity Registry 里面搜索添加Universal RP   Unity中,创建渲染管线的方式为Asset文件夹下右键 Create-Readering-URP Asset(with Universal Asset) 会创建以下两个Pipeline:  接着在图中的设置里添加这两个渲染管线(Project Setting在Edit窗口下

    2024年02月08日
    浏览(63)
  • Unity3D学习记录04——利用射线实现角色类似LOL的移动

    首先新建一个空白的GameObject,挂在一个MouseManager的脚本 实现思路: 通过获取鼠标点击的位置,获得该位置的信息,然后使角色移动到该位置 MouseManager脚本的代码如下:   代码解释: 先创建了一个Action类型的事件OnMouseClicked 这个是C#中事件的内容,我们可以在满足条件的时

    2024年02月08日
    浏览(57)
  • Unity3D高级编程主程手记 学习笔记二:C#技术要点

    1.Untiy3D中C#的底层原理 Unity底层在运行C#程序时有两种机制:一种是Mono,另一种是IL2CPP。 Mono存在的目的是为了跨平台 ,因为最初C#只支持Windows。而IL可以看成是一种汇编语言且完全基于堆栈,必须运行在虚拟机上。也就是说C#会被编译器编译成IL,当需要他们时就会被实时的

    2024年02月08日
    浏览(64)
  • 【Unity3D日常开发】Unity3D中协程的使用

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 最近有小伙伴问协程怎么用、怎么写,我也是会用会写,但是原理不是很明白。 学习了一下,总结出

    2024年02月12日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包