目录
Mathf 类
Static Properties
Static Methods
Input 类
Static Properties
Static Methods
下图是Unity 中各个类的继承关系:
点击 这里进入官方文档。
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...(只读)
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 的正切值。
点击这里进入官方文档。
- Unity中定制按钮的方式 :Edit–>project setting–>Input
- 具体按键设定规则见: Unity圣典Input输入; 点击这里进入官方的对应页面
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”表示返回或回车。
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 表示鼠标的滚轮被按下。
点击这里进入官网
unity 中是 使用四元数是表示所有旋转的。
你可以使用 Quaternion.operator * 由另一个四元数来旋转一个旋转角度,或由一个旋转角度来旋转一个向量。
Quaternion.identity
public static Quaternion identity;
- 此四元数对应于“无旋转” ,对象与世界轴或父轴完全对齐。(只读)
Quaternion.Euler
public static Quaternion Euler(float x, float y, float z);
public static Quaternion Euler(Vector3 euler);
返回一个旋转角度,绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(像这样的顺序)。