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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/712897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5 C++ 发射子弹发射(Projectile)

一.相关蓝图的练习&#xff0c;在我之前的文章中射击子弹案例-CSDN博客 本篇使用C实现 1.创建C类 MyBullet,在MyBullet.h中包含相关头文件 #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Components/StaticMeshComponent.…

SpringBoot 注解全解析

注解的优势&#xff1a; 采用纯 java 代码&#xff0c;不在需要配置繁杂的 xml 文件在配置中也可享受面向对象带来的好处类型安全对重构可以提供良好的支持减少复杂配置文件的同时亦能享受到 springIoC 容器提供的功能 1. 常用的Spring Boot注释及其用途和示例 1&#xff09;S…

Java 中notify 和 notifyAll 方法介绍

1. notify 方法 notify() 方法是 Java 中 Object 类的一个方法&#xff0c;它用来唤醒在该对象的监视器&#xff08;monitor&#xff09;上等待的单个线程。如果有多个线程都在该对象上等待&#xff0c;则会随机唤醒其中一个线程。被唤醒的线程将会尝试重新获取对象锁&#xff…

idea集成git详解教程(实用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下载git Git - Downloads 一路傻瓜式安装即可&#xff08;NEXT&#xff09; 2.软件测试 在Windows桌面空白处&#xff0c;点击鼠标右键&#xff0c;弹出右键菜单 Git软件安装后&#xff0c;会在右键菜单中增加两个菜单 Git GUI He…

matplotlib绘图中文乱码问题

如图所示&#xff0c;在使用python包matplotlib绘图时中文文字显示乱码&#xff0c;在绘图前加入以下两行代码即可 # 导入包 import matplotlib.pyplot as plt # 解决中文乱码问题 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus] False重新运行代…

Linux 进程的前台/后台切换

目录 前言 简单例子 前言 当你用shell启动一个程序时&#xff0c;往往他是在前台工作的。程序会一直占用终端命令行&#xff0c;例如你在前台解压的时候必须等着&#xff0c;期间干不了别的事&#xff08;除非另开一个终端&#xff09;。 例如经常用连接到远程服务器执行脚本…

【知识摘要】一文带你了解什么是RedLock。

1、什么是RedLock 红锁&#xff08;RedLock&#xff09;是一种分布式锁算法&#xff0c;由 Redis 的作者 Salvatore Sanfilippo&#xff08;也称为 Antirez&#xff09;设计&#xff0c;用于在分布式系统中实现可靠的锁机制。它的设计解决了单一 Redis 实例作为分布式锁可能出…

【Django】执行查询—跨关系查询中的跨多值关联问题

跨多值查询 跨越 ManyToManyField 或反查 ForeignKey &#xff08;例如从 Blog 到 Entry &#xff09;时&#xff0c;对多个属性进行过滤会产生这样的问题&#xff1a;是否要求每个属性都在同一个相关对象中重合。 filter() 先看filter()&#xff0c;通过一个例子看&#xf…

打造无缝滚动体验:JavaScript中的scrollIntoView()方法实战指南

在现代Web开发中&#xff0c;提升用户体验是至关重要的。通过JavaScript的scrollIntoView()方法&#xff0c;我们可以为用户创造出流畅而令人愉悦的滚动体验。本文将深入研究scrollIntoView()的强大功能&#xff0c;并结合实例演示如何在项目中巧妙应用&#xff0c;以打造出无缝…

缓存穿透解决方案之布隆过滤器

布隆过滤器可以快速判断数据是否存在&#xff0c;避免从数据库中查询数据是否存在&#xff0c;减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数&#xff0c;可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时&#xff0c;布隆过滤器会…

Java底层自学大纲_高可用篇

高可用专题_自学大纲所属类别学习主题建议课时&#xff08;h&#xff09; A 容器化技术001 Docker架构设计原理2.5 A 容器化技术002 Docker部署springboot项目2.5 A 容器化技术003 基于Docker-Compose部署微服务项目2.5 B Nginx实现高可用004 Nginx反向代理&负载均衡&a…

LabVIEW眼结膜微血管采集管理系统

LabVIEW眼结膜微血管采集管理系统 开发一套基于LabVIEW的全自动眼结膜微血管采集管理系统&#xff0c;以提高眼结膜微血管临床研究的效率。系统集成了自动化图像采集、图像质量优化和规范化数据管理等功能&#xff0c;有效缩短了图像采集时间&#xff0c;提高了图像质量&#…

idea 多模块A模块调用了B模块的Jar包,而非本地源码

1&#xff0c;问题描述 对于多模块的互相调用&#xff0c;比如模块A&#xff0c;模块B&#xff0c;模块C&#xff0c; 这在本地都是可以编辑进行开发的源码&#xff0c; 按理说是模块A可以直接点进模块B的本地源码&#xff0c; 但是不知道什么原因&#xff0c;导致模块A点进…

C++小记 - 二叉树

文章目录 二叉树一、二叉树理论基础篇二叉树的种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树 二叉树的存储方式链式存储&#xff1a;顺序存储&#xff1a;遍历规则&#xff1a;构造实现&#xff1a; 二叉树的遍历方式二叉树的定义 二、二叉树的递归遍历递归算法的三个要素:递…

vue+element UI中给指定日期添加标记

1.日期控件中添加:picker-options属性&#xff0c;即:picker-options“myPickerOptions” <el-date-picker:class"item.scds !null ?xtsjBlue:xtsjRed"v-model"item.date"value-format"yyyy-MM-dd"type"date":picker-options"…

Python中的heapq模块

Python中的heapq模块 文章目录 Python中的heapq模块1.heapq的方法2.使用heapq创建堆3.使用heapq实现堆排序4.获取堆中的前n个最大值或最小值Reference heapq模块实现了堆队列的算法&#xff0c;即优先队列算法。heapq其实是实现了一种小顶堆&#xff0c;所以使用pop()方法返回的…

如何进行弱网测试?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 如今这个高度互联的时代里&#xff0c;网络环境对于应用程序的影响越来越重要。 而弱网测试就是…

leetcode--接雨水(双指针法,动态规划,单调栈)

目录 方法一&#xff1a;双指针法 方法二&#xff1a;动态规划 方法三&#xff1a;单调栈 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 黑色的是柱子&#xff0c;蓝色的是雨水&#xff0c;我们先来观察一下雨水的分布情况: 雨水落在凹槽之间&#xff0c;在一个凹槽的…

使用js写一个登录验证码效果

面试题 登录页面获取验证码的功能&#xff0c;用户点击获取验证码按钮(id”btn1”)&#xff0c;按文字变为“(N)后获取验证码”&#xff0c;N为倒计对秒数&#xff0c;从 60 开始&#xff0c;每秒减一&#xff0c;减到 0的时候&#xff0c;按钮文字变为“获取验证码”&#xff…

Beans模块之工厂模块Aware

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…