Unity3D中API常用方法和类详细讲解(Mathf 类、Input 类、Quaternion 类)

目录

Mathf 类

Static Properties

Static Methods

Input 类

Static Properties

Static Methods


下图是Unity 中各个类的继承关系:

Unity3D中API常用方法和类详细讲解(Mathf 类、Input 类、Quaternion 类)_第1张图片

 


Mathf 类


点击 这里进入官方文档。


Static Properties


Mathf.Deg2Rad:

public static float Deg2Rad;
  • 用来计算数学计算中从角度到弧度转变的常量值,等同于为(2 * Mathf.PI) / 360 ,属性只读。
  • 提示: Rag2Deg 与 此属性功能相反,是从弧度到角度的转换常量。

Mathf.Rad2Deg :

public static float Rad2Deg;
  • 弧度到度的转化常量。(只读)    这等于 360 / (Mathf.PI* 2)。 

Mathf.Epsilon:

public static float Epsilon;

一个很小的浮点值(只读)。是一个大于0的最小浮点数。

遵守以下规则:

  • anyValue + Epsilon = anyValue
  • anyValue - Epsilon = anyValue
  • 0 + Epsilon = Epsilon
  • 0 - Epsilon = -Epsilon

注意:任意数与Epsilon的之间值将导致在任意数发生舍位误差(truncating errors)。

Mathf.Infinity:

public static float Infinity;

表示正无穷,也就是无穷大,∞ (只读)

其计算规则及使用说明如下。

  • Mathf.Infinity ÷ x = Mathf.Infinity,其中x为一个具体数值。
  • Mathf.Infinity ÷ Mathf.Infinity = NaN,即计算结果不是数值。
  • Mathf.Infinity   只是在Unity中的一个正无穷大数值的表示,不代表任何具体数值,不能用在具体的数值计算中。

Mathf.NegativeInfinity:

public static float NegativeInfinity;
  • 表示负无穷,也就是无穷小,-∞ (只读)

Mathf.PI:

public static float PI;

  PI(读pai)的值,也就是圆周率(π)的值3.14159265358979323846...(只读) 


Static Methods


Mathf.Abs :

public static float Abs(float f);
  • 返回 一个 float类型  的绝对值。
public static int Abs(int value);
  • 返回一个 int 类型的绝对值

Mathf.Acos:

public static float Acos(float f);

   以弧度为单位计算并返回参数 f 中指定的数字的反余弦值。 

Mathf.Approximately :

public static bool Approximately(float a, float b);
  •  比较两个浮点值,如果它们相似,则返回true。
  • 注意:由于浮点数值不精确,不建议使用等于来比较它们。例如,1.0 == 10.0/10.0 也许不会返回true。 

Mathf.Asin :

public static float Asin(float f);
  •  以弧度为单位计算并返回参数 f 中指定的数字的反正弦值。 

Mathf.Atan :

public static float Atan(float f);
  • 计算并返回参数 f 反正切值。返回值介于负二分之 pi 与正二分之 pi 之间。 

Mathf.Ceil (向上进位取整):

public static float Ceil(float f);
  • 返回一个值,该值必须是等于或者大于 f 的float 类型的最小整数

Mathf.CeilToInt 向上进位取整):

public static int CeilToInt(float f);
  • 返回一个值,该值必须是等于或者大于 f 的int 类型的 最小整数

Mathf.Clamp :

public static float Clamp(float value, float min, float max);
value 浮点值限制在由最小值和最大值定义的范围内。
min 要比较的最小浮点值。
max 要比较的最大浮点值。
  • 返回的是min和max之间的float类型的值。 
  • 限制 value 的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max;如果刚好在min 和 max 之间,那么就返回value
public static int Clamp(int value, int min, int max);
value 要限制在最小到最大范围内的整数值
min 要比较的最小整数点值。
max 要比较的最大整数点值。
  • 返回的是min和max之间的int类型的值。 
  •  限制 value 的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max;如果刚好在min 和 max 之间,那么就返回value。例如,Clamp(10,0,5)将返回最大参数5而不是4。

Mathf.Clamp01 :

public static float Clamp01(float value);

限制 value 在0 ~ 1之间并返回value。如果value 为负,返回0。如果value大于1,返回1; 

Mathf.ClosestPowerOfTwo :

public static int ClosestPowerOfTwo(int value);

返回距离 value 最近的 2 的 x 次方。 

2 的x 次方如下:

  • 2的1次方:2
  • 2的2次方:4
  • 2的3次方:8
  • 2的4次方:16
  • 2的5次方:32
  • 2的6次方:64
  • 2的7次方:128

Mathf.Cos

public static float Cos(float f);
f 输入角度,单位为弧度

返回由参数 f  指定的角的余弦值(介于 -1.0 与 1.0 之间的值)。

注意: 如果在此函数中使用非常大的数字,则此方法的 输入角值 有一个可接受的范围,超过该范围计算将失败。在windows上,可接受的范围大约在 -9223372036854775295 到 9223372036854775295 之间。这个范围在其他平台上可能有所不同。对于超出可接受范围的值,Cos方法返回输入值,而不是抛出异常。

Mathf.DeltaAngle

public static float DeltaAngle(float current, float target);
  • 计算两个给定角度(以度为单位)之间的最短的距离(或差值)。

Mathf.Exp 指数:

public static float Exp(float power);
  • 返回 e 的 power 次方的值。 

Mathf.Floor (向下取整):

public static float Floor(float f);
  • 返回小于或等于 f 的最大整数。

Mathf.IsPowerOfTwo

public static bool IsPowerOfTwo(int value);

如果 提供的 value 是 2的幂,则返回true

Mathf.Lerp

public static float Lerp(float a, float b, float t);
a The start value.
b The end value.
t 两个浮点数之间的插值。
  • 用 t 在 a 和 b 之间做线性插值。参数 t 在[0,1] 的范围之内。   该操作的特点是: 在运行时 是先快速移动,然后 越靠近目标,越慢
  • 当t = 0 返回 a,当t = 1 返回 b。当t = 0.5  返回a 和 b 的平均值(中间值)。
Mathf.Lerp(a, b, t) //差值运算,返回 a+(b-a)*t 其中t=Mathf.Clamp(t,0,1)

Mathf.LerpAngle

public static float LerpAngle(float a, float b, float t);
  • 与 Lerp 相同,但需要确保值在环绕360度时正确插值。
  • 参数 t 在[0,1]范围之内。变量a和b是以度为单位的。

Mathf.Log

public static float Log(float f, float p);
  • 返回f 和 p 的对数。
public static float Log(float f);
  • 返回指定数字的自然(以e为底)对数。

Mathf.Log10

public static float Log10(float f);

返回指定数字的以10为底的对数。

Mathf.Max

public static float Max(float a, float b);

public static float Max(params float[] values);
  • 返回两个或多个值中,其中最大的 float 值。
public static int Max(int a, int b);
public static int Max(params int[] values);
  • 返回两个或多个值中,其中最大的 int 值。

Mathf.Min

public static float Min(float a, float b);

public static float Min(params float[] values);
  • 返回两个或多个值中,其中最小的 float 值。
public static int Min(int a, int b);
public static int Min(params int[] values);
  • 返回两个或多个值中,其中最小的 int 值。

Mathf.MoveTowards

public static float MoveTowards(float current, float target, float maxDelta);
MoveTowards(a,b,value) // 移动,从a到b,每次移动value
current The current value.
target 要移向的目标值。
maxDelta 应用到该值的最大变化
  • 每一帧都让当前值逐渐的向目标值移动个 maxDelta。
  • 本质上 和 Mathf.Lerp相同,但该函数是一个均速的运动,但是该函数将确保我们的速度不会超过maxDelta。如果 maxDelta为负值,会以 maxDelta 的值以反方向推离目标。

Mathf.MoveTowardsAngle

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

本质上与MoveTowards 一样, 但是当它们环绕360度时确保插值正确。

变量 current 和 target 是以度数为单位的。出于优化原因,maxDelta的负值不受支持,可能会导致振荡。如果要从 target 推离 current,添加180度角来代替

Mathf.NextPowerOfTwo

public static int NextPowerOfTwo(int value);
  • 返回 value 最接近的二次方的值。

Mathf.PingPong

public static float PingPong(float t, float length);
  • 让数值 t 在 0 到 length 之间往返。t 值永远不会大于 length 的值,也永远不会小于0。
  • 返回的值是在0 和 length 之间来回移动的值。

Mathf.Pow

public static float Pow(float f, float p);
  • 计算并返回 f 的 p 次幂。比如6的6次方是36

Mathf.Repeat

public static float Repeat(float t, float length);
  • 循环值t,使其永远不会大于length并且永远不会小于0。
  • 这是类似于模运算符,但该操作可以适用于浮点数。例如,t=3.0, length=2.5,结果是0.5;t=5,length=2.5,结果是0.0。

Mathf.Round

public static float Round(float f);
  • 返回浮点数 f ,然后进行四舍五入最接近的整数。
  • 如果数字末尾是 .5,那么它是将在两个整数的中间,如果其中一个是偶数,另一个是奇数,那么则返回偶数的那一个。

Mathf.RoundToInt

public static int RoundToInt(float f);
  • 返回浮点数 f ,然后进行四舍五入最接近的整数。
  • 如果数字末尾是 .5,那么它是将在两个整数的中间,如果其中一个是偶数,另一个是奇数,那么则返回偶数的那一个。

Mathf.Sign

public static float Sign(float f);
  • 返回f的符号。
  • 当 f为 正 或 为零时,则返回值为1,当f为负时;则返回值为-1。

Mathf.Sin

public static float Sin(float f);
f 输入的角度(以弧度为单位)。
  • 返回弧度角 f 的正弦值。返回值在-1和+1之间。
  • 注意: 如果在此函数中使用非常大的数字,则此方法的 f 有一个可接受的范围,超过该范围计算将失败。在windows上,可接受的范围大约在-9223372036854775295到9223372036854775295之间。这个范围在其他平台上可能有所不同。对于超出可接受范围的值,Sin方法返回输入值,而不是抛出异常。

Mathf.SmoothDamp

public static float SmoothDamp(float current, float target, 
    ref float currentVelocity, float smoothTime, 
    float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);
current 当前所在的位置
target 需要到达的目标位置
currentVelocity 当前速度,这个值在每次调用时都会被函数修改。
smoothTime 是达到目标位置所需的时间。值越小,达到目标的速度越快。
maxSpeed 可选参数,允许你限制的最大速度。
deltaTime 上次调用该函数到现在所经过的时间。默认为Time.deltaTime。
  • 随着时间的推移,逐渐改变一个值以达到期望的目标值。
  • 这个值就像被一个不会崩溃的弹簧减振器一样被平滑。这个函数可以用来平滑任何类型的值,位置,颜色,标量。

Mathf.SmoothDampAngle

public static float SmoothDampAngle(float current, float target, 
    ref float currentVelocity, float smoothTime, 
    float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);
current 当前所在的位置
target 需要到达的目标位置
currentVelocity 当前速度,这个值在每次调用时都会被函数修改。
smoothTime 是达到目标位置所需的时间。值越小,达到目标的速度越快。
maxSpeed 可选参数,允许你限制的最大速度。
deltaTime 上次调用该函数到现在所经过的时间。默认为Time.deltaTime。
  • 随着时间的推移逐渐改变一个给定的角度到期望的角度。
  • 这个值通过一些弹簧减震器类似的功能被平滑。这个函数可以用来平滑任何一种值,位置,颜色,标量。最常见的是平滑一个跟随摄像机。

Mathf.SmoothStep

public static float SmoothStep(float from, float to, float t);

在min 和 max 之间进行插值,并在极限处进行平滑处理。

该函数以类似于 Lerp 的方式在min和max之间插值。区别是,Mathf.SmoothStep 的 插值从一开始就会逐渐加快,而在结束时则会减速。这通常用于创建渐变和其他过渡看起来比较自然的动画非常有用。

Mathf.Sqrt

public static float Sqrt(float f);
  • 计算并返回 f 的平方根。比如4 的平方根是2, 9 的平方根 是3, 16 的平方根是 4

Mathf.Tan

public static float Tan(float f);
  • 返回以弧度为单位的角 f 的正切值。

 


Input 类


点击这里进入官方文档。

  • Unity中定制按钮的方式 :Edit–>project setting–>Input 
  • 具体按键设定规则见: Unity圣典Input输入;  点击这里进入官方的对应页面

Static Properties


Input.anyKey

public static bool anyKey;
  • 当用户按下任意键或鼠标键时, 就会返回true。 跟 Input.anyKeyDown 不同的是,  只要 Input.anyKey 没有被释放,就会一直触发,  而 anyKeyDown 只有当按下的那一刻才会触发。

Input.anyKeyDown

public static bool anyKeyDown;
  • 当用户按下任意按键或鼠标按键时那一帧时返回true(只读)。只会执行一次
  • 您应该从 Update 函数轮流检测此变量,因为每个帧都会重置状态。 在用户释放所有键 / 按钮并再次按下任何键/按钮之前,它不会返回true。 这不会检测到触摸。 对于触摸,请使用 Input.touchCount.

Input.acceleration

public static Vector3 acceleration;
  • 上一次测量的设备在三维空间中的线性加速度(只读)
  • 常见于3D游戏中的重力感应操控模式。当用户倾斜设备时, 若设备上有加速度传感器, 就会回传一个代表设备倾斜加速度的三维向量,使用 Input.acceleration 变量就可以获取该参数。

Input.gyro

public static Gyroscope gyro;
  • 返回默认的陀螺仪。
  • 使用此选项可返回设备的陀螺仪的详细信息。首先确保您的设备有陀螺仪。使用Input.gyro.Enabled进行检查。
  • 了解设备的陀螺仪细节使您能够包含需要了解设备方向的功能。 常见用途包括在用户旋转和移动设备时更改摄像机角度或GameObject的位置。

Input.mousePosition

public static Vector3 mousePosition;
  • 在屏幕坐标空间中当前鼠标的位置(只读)。它是以像素为单位的。
  • 屏幕或窗口的左下角是(0,0)。 屏幕或窗口的右上角位于(Screen.width,Screen.height)。
  • 注意:即使鼠标不在 Game 视图中,也会返回鼠标的位置,例如,即使当 Cursor.lockState 设置为  CursorLockMode.None时也是如此。当以窗口模式运行且光标未被限制时,小于0或大于屏幕尺寸(Screen.width,Screen.height)的位置值表示鼠标光标在游戏窗口之外。

Input.touchCount

public static int touchCount;
  • 触摸的数量。每一帧之内都一定不会改变(只读)

Input.touches

public static Touch[] touches;
  • Input.touches 变量可以获取到当前在屏幕上的所有触控的引用(Touch[]类型), 开发人员就可以根据索引轻易地获取各个触控点的信息

Input.inputString

public static string inputString;
  • 返回键盘在这一帧中输入的字符。注意, 在返回的字符串中只包含ASCI 码中的字符。
  • 字符串可以包含两个需要处理的特殊字符:字符“\b”表示退格。字符“\n”表示返回或回车。

 

 


Static Methods


Input.GetAxis

public static float GetAxis(string axisName);
  • 返回由 axisName 标识的虚拟轴的值。 注: 该虚拟轴的值 是在  Editor -> Project Setting  中 的 Input 中 的 Horizontal、 vertical 这两个轴。
  • 当用于 keyboard 和joystick 输入时, 返回值的范围是 -1 到 1. 如果将 axis  设置为 delta mouse movement ,则  mouse delta 乘以  axis sensitivity, 此时 返回值的范围不是 -1 到 1.
  • 该值和帧率无关;使用此值时,你不需要关心不同的帧速率。

Input.GetAxisRaw

public static float GetAxisRaw(string axisName);
  • 通过 axisName 名称返回一个不使用平滑滤波器的虚拟轴的值。
  • 对于 keyboard 和 joystick 的输入,返回值将在-1.1范围内。由于输入不是平滑的,键盘输入将总是- 1, 0 或 1。如果您想自己进行键盘输入处理的所有平滑操作,这将非常有用。

Input.GetAxisRaw 和 Input.GetAxis 区别在于:

Input.GetAxisRaw 当在游戏运行的时候, 按下你设置好的键盘就会返回 1和-1这两个值。 意思就是说 该操作永远只会返回-1,0,1三个值!
Input.GetAxis 当按下你设置的建则会返回一个类似加速度的值 0.1-->0.3 -->0.1然后将会依次减少..类似刹车和开车.适用于赛车加速

Input.GetButton

public static bool GetButton(string buttonName);
buttonName 按钮的名称,例如:Jump
  • 当由 'buttonname” 确定的虚拟按键被按下时,返回true。 注: 虚拟按键就是开发人员自定义的按键,在 Editor -> Project Setting  中 的 Input 中可以自定义设置。
  • 想象一下自动开火 - 如果按钮一直被按住此方法将永远返回true。只有在实现触发动作的事件时才使用此功能,例如射击武器。buttonName 通常是在 Input Manager 中来设置一个名称,比如Jump或Fire1。GetButton被释放时将返回false。
  • 注意:如果需要控制连续移动的输入,请使用  GetAxis。

Input.GetButtonDown

public static bool GetButtonDown(string buttonName);
  • 在用户按下由 buttonName 名称确定的虚拟按键的那一帧返回true。
  • 你需要在 Update 方法中调用这个方法,此后每一帧重置状态时,它将不会返回true,除非用户释放此按键然后重新按下。
  • 只有当执行像武器射击这样的事件时才可用此方法,Input.GetAxis适用于各种运动行为。

Input.GetButtonUp

public static bool GetButtonUp(string buttonName);
  • 在用户释放由 buttonName 名称确定的虚拟按钮的那一帧返回true。
  • 你需要在 Update 方法中调用这个方法,此后每一帧重置状态时,它将不会返回true,除非用户按下此按键然后重新释放。
  • 只有当执行像武器射击这样的事件时才可用此方法。Input.GetAxis适用于各种运动行为。

Input.GetKey

public static bool GetKey(string name);
  • 当用户按下由 name 标识的键时返回 true。 该方法 只要某键被按下,就会一直执行, 直到释放该键时; 才会停止执行。
  • Input.GetKey 将返回 key 的 状态,此功能可以用于 某个 key 是否被按下。 有关按 key 的详情列表,可以查看 Input Manager.
  • 在处理 input 的时候, 建议使用 Input.GetAxis and Input.GetButton; 因为它们可以 在 Input Manager 中设置自定义的按 key 
public static bool GetKey(KeyCode key);
  • 当用户按住由KeyCode枚举参数标识的键时,返回true。

Input.GetKeyDown  

public static bool GetKeyDown(string name);
  • 在用户开始按下按 Sharename 标识的的那一帧返回true。 该操作只有当按键被按下的那一刻才会执行, 只会执行一次
  • 您需要从Update函数调用此函数,该操作因为每帧状态都会重置。直到用户释放该键并再次按下它,它才会返回true。
  • 有关按 key 的详情列表,可以查看 Input Manager. 在处理 input 的时候, 建议使用 Input.GetAxis and Input.GetButton; 因为它们可以 在 Input Manager 中设置自定义的 key 。
public static bool GetKeyDown(KeyCode key);
  • 当用户按下映射到指定的由 KeyCode 枚举参数的按键时的那一帧返回true。 

 

Input.GetKeyUp

public static bool GetKeyUp(string name);
  • 在用户释放由 name 标识的键的那一帧返回true。  该操作只有当按键被释放的那一刻才会执行, 只会执行一次
  • 您需要从Update函数调用此函数,因为该操作每帧都会重置状态。 在用户按下键并再次释放它之前,它不会返回true。
  • 有关按 key 的详情列表,可以查看 Input Manager. 在处理 input 的时候, 建议使用 Input.GetAxis and Input.GetButton; 因为它们可以 在 Input Manager 中设置自定义的 key 。
public static bool GetKeyUp(KeyCode key);
  • 在用户释放给定键值的按键的那一帧返回true。

Input.GetMouseButton

public static bool GetMouseButton(int button);
  • 当指定的鼠标按钮被按下时返回true, 在释放时返回 false 。 该方法 只要鼠标某按钮被按下,就会一直执行, 直到释放该按钮时; 才会停止执行。

  • 如果 button 的值为0表示按下了鼠标的左按钮,1 表示鼠标的右按钮,2 表示鼠标的滚轮被按下。

Input.GetMouseButtonDown

public static bool GetMouseButtonDown(int button);
  • 在用户按下指定鼠标按钮的那一帧返回true。该操作只有当按鼠标按键被按下的那一刻才会执行, 只会执行一次
  • 你需要在Update方法中调用这个方法,此后每一帧该操作都会重置状态。在用户释放鼠标按钮并再次按下鼠标按钮之前,它不会返回true。
  • 如果 button 的值为0表示按下了鼠标的左按钮,1 表示鼠标的右按钮,2 表示鼠标的滚轮。

Input.GetMouseButtonUp

public static bool GetMouseButtonUp(int button);
  • 在用户释放指定鼠标按键的那一帧返回true。该操作只有当按鼠标按键被释放的那一刻才会执行, 只会执行一次

  • 你需要在Update方法中调用这个方法,此后每一帧该操作都会重置状态。在用户释放鼠标按钮并再次按下鼠标按钮之前,它不会返回true。
  • 如果 button 的值为0表示按下了鼠标的左按钮,1 表示鼠标的右按钮,2 表示鼠标的滚轮被按下。

 


Quaternion 类


点击这里进入官网

unity 中是 使用四元数是表示所有旋转的。

你可以使用 Quaternion.operator * 由另一个四元数来旋转一个旋转角度,或由一个旋转角度来旋转一个向量。


Static Properties


Quaternion.identity

public static Quaternion identity;
  • 此四元数对应于“无旋转” ,对象与世界轴或父轴完全对齐。(只读)

Static Methods


Quaternion.Euler

public static Quaternion Euler(float x, float y, float z);
public static Quaternion Euler(Vector3 euler);

返回一个旋转角度,绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(像这样的顺序)。

 

 

 

 

 

 

你可能感兴趣的:(Unity3D)