Mathf方法
基本方法
- Mathf.abs() 计算绝对值。
- Mathf.ceil() 将数字向上舍入为最接近的整数。
- Mathf.floor() 将数字向下舍入为最接近的整数。
- Mathf.round() 四舍五入为最接近的整数。
- Mathf.max() 返回两个整数中较大的一个。
- Mathf.min() 返回两个整数中较小的一个。
- Mathf.random() 返回一个0.0 与1.0 之间的伪随机数。
平方/开方
- Mathf.pow() 计算x 的y 次方。
- Mathf.sqrt() 计算平方根。
夹值
返回夹与最大值与最小值的值。
float Clamp(float value, float min, float max)
若正好在区间内则直接返回原值,如果比最大值大则返回最大值,若比最小值小则返回最小值。
代码语言:javascript复制float num01 = Mathf.Clamp(0.6f, 0.8f, 2.0f);
print(num01);
角度相关
- Mathf.sin() 计算正弦值。
- Mathf.acos() 计算反余弦值。
- Mathf.asin() 计算反正弦值。
- Mathf.atan() 计算反正切值。
- Mathf.atan2() 计算从x 坐标轴到点的角度。
- Mathf.cos() 计算余弦值。
- Mathf.tan() 计算正切值。
Vector3
静态变量
方法 | 说明 |
---|---|
back | 用于编写 Vector3(0, 0, -1) 的简便方法。 |
down | 用于编写 Vector3(0, -1, 0) 的简便方法。 |
forward | 用于编写 Vector3(0, 0, 1) 的简便方法。 |
left | 用于编写 Vector3(-1, 0, 0) 的简便方法。 |
negativeInfinity | 用于编写 Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity) 的简便方法。 |
one | 用于编写 Vector3(1, 1, 1) 的简便方法。 |
positiveInfinity | 用于编写 Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity) 的简便方法。 |
right | 用于编写 Vector3(1, 0, 0) 的简便方法。 |
up | 用于编写 Vector3(0, 1, 0) 的简便方法。 |
zero | 用于编写 Vector3(0, 0, 0) 的简便方法 |
变量
方法 | 说明 |
---|---|
magnitude | 返回该向量的长度。(只读) |
normalized | 返回 magnitude 为 1 时的该向量。(只读) |
sqrMagnitude | 返回该向量的平方长度。(只读) |
this[int] | 分别使用 [0]、[1]、[2] 访问 x、y、z 分量。 |
x | 向量的 X 分量。 |
y | 向量的 Y 分量。 |
z | 向量的 Z 分量。 |
示例
代码语言:javascript复制Vector3 vector = new Vector3(20, 10, 10);
Vector3 v = vector.normalized;
静态函数
方法 | 说明 |
---|---|
Angle | 获取from和to之间以度为单位的无符号角。 |
ClampMagnitude | 返回 vector 的副本,其大小被限制为 /maxLength/。 |
Cross | 两个向量的叉积。 |
Distance | 返回 a 与 b 之间的距离。 |
Dot | 两个向量的点积。 |
Lerp | 在两个点之间进行线性插值。 |
LerpUnclamped | 在两个向量之间进行线性插值。 |
Max | 返回由两个向量的最大分量组成的向量。 |
Min | 返回由两个向量的最小分量组成的向量。 |
MoveTowards | 计算 current 指定的点与 target 指定的点之间的位置,移动距离不超过 maxDistanceDelta 指定的距离。 |
Normalize | 使该向量的值为 1。 |
OrthoNormalize | 将向量标准化并使它们彼此正交。 |
Project | 将向量投影到另一个向量上。 |
ProjectOnPlane | 将向量投影到由法线定义的平面上(法线与该平面正交)。 |
Reflect | 从法线定义的平面反射一个向量。 |
RotateTowards | 将向量 current 朝 target 旋转。 |
Scale | 将两个向量的分量相乘。 |
SignedAngle | 向量之间的夹角,返回两个向量之间较小的角度(在旋转计算中常常用到) |
Slerp | 在两个向量之间进行球形插值。 |
SlerpUnclamped | 在两个向量之间进行球形插值。 |
SmoothDamp | 随时间推移将一个向量逐渐改变为所需目标。 |
运算符
方法 | 说明 |
---|---|
operator - | 将一个向量减去另一个向量。 |
operator != | 不相等返回true。 |
operator * | 将向量乘以一个数值。 |
operator / | 将向量除以一个数值。 |
operator | 将两个向量相加。 |
operator == | 如果两个向量相等,则返回 true。 |
Vector2
用于表示 2D 向量和点。
在某些地方,可以使用该结构表示 2D 位置和向量 (例如 Mesh 中的纹理坐标或 Material 中的纹理偏移)。在大多数其他情况下, 需要使用 Vector3。
静态变量
方法 | 说明 |
---|---|
down | 用于编写 Vector2(0, -1) 的简便方法。 |
left | 用于编写 Vector2(-1, 0) 的简便方法。 |
negativeInfinity | 用于编写 Vector2(float.NegativeInfinity, float.NegativeInfinity) 的简便方法。 |
one | 用于编写 Vector2(1, 1) 的简便方法。 |
positiveInfinity | 用于编写 Vector2(float.PositiveInfinity, float.PositiveInfinity) 的简便方法。 |
right | 用于编写 Vector2(1, 0) 的简便方法。 |
up | 用于编写 Vector2(0, 1) 的简便方法。 |
zero | 用于编写 Vector2(0, 0) 的简便方法。 |
变量
方法 | 说明 |
---|---|
magnitude | 返回该向量的长度。(只读) |
normalized | 返回 magnitude 为 1 时的该向量。(只读) |
sqrMagnitude | 返回该向量的平方长度。(只读) |
this[int] | 分别使用 [0] 或 [1] 访问 x 或 y 分量。 |
x | 向量的 X 分量。 |
y | 向量的 Y 分量。 |
构造函数
方法 | 说明 |
---|---|
Vector2 | 使用给定的 x、y 分量构造新向量。 |
公共函数
方法 | 说明 |
---|---|
Equals | 如果给定向量与该向量完全相等,则返回 true。 |
Normalize | 使该向量的 magnitude 为 1。 |
Set | 设置现有 Vector2 的 x 和 y 分量。 |
ToString | Returns a formatted string for this vector. |
静态函数
方法 | 说明 |
---|---|
Angle | 获取from和to之间以度为单位的无符号角。 |
ClampMagnitude | 返回 vector 的副本,其大小被限制为 /maxLength/。 |
Distance | 返回 a 与 b 之间的距离。 |
Dot | 两个向量的点积。 |
Lerp | 在向量 a 与 b 之间按 t 进行线性插值。 |
LerpUnclamped | 在向量 a 与 b 之间按 t 进行线性插值。 |
Max | 返回由两个向量的最大分量组成的向量。 |
Min | 返回由两个向量的最小分量组成的向量。 |
MoveTowards | 将点 current 移向 /target/。 |
Perpendicular | 返回垂直于该 2D 向量的 2D 向量。对于正 Y 轴向上的 2D 坐标系来说,结果始终沿逆时针方向旋转 90 度。 |
Reflect | 从法线定义的向量反射一个向量。 |
Scale | 将两个向量的分量相乘。 |
SignedAngle | Gets the signed angle in degrees between from and to. |
SmoothDamp | 随时间推移将一个向量逐渐改变为所需目标。 |
运算符
方法 | 说明 |
---|---|
operator - | 将一个向量减去另一个向量。 |
operator * | 将向量乘以一个数值。 |
operator / | 将向量除以一个数值。 |
operator | 将两个向量相加。 |
operator == | 如果两个向量大致相等,则返回 true。 |
Vector2 | 将 Vector3 转换为 Vector2。 |
Vector3 | 将 Vector2 转换为 Vector3。 |
Quaternion
四元数用于表示旋转。
Quaternion.AngleAxis
创建一个围绕 axis
旋转 angle
度的旋转。
public static QuaternionAngleAxis (float angle, Vector3 axis);
围绕Z轴旋转30度角。
代码语言:javascript复制transform.rotation = Quaternion.AngleAxis(30, Vector3.forward);
朝向
a朝向b
代码语言:javascript复制Vector3 v = b.transform.position - a.transform.position;
float angle = Mathf.Atan2(v.y, v.x) * Mathf.Rad2Deg;
Quaternion trailRotation = Quaternion.AngleAxis(angle, Vector3.forward);
a.transform.rotation = trailRotation;