四元数用于表示旋转。
它们结构紧凑,不受万向锁影响,可以轻松插值。
Unity 内部使用四元数来表示所有旋转。
它们基于复数,不容易理解。
您几乎不会有机会访问或修改单个四元数分量(x、y、z、w);
大多数情况下,您只需要获取现有旋转(例如,来自 Transform),然后使用它们构造新的旋转
(例如,在两个旋转之间平滑插值)。
您绝大多数时间使用的四元数函数为:
Quaternion.LookRotation、Quaternion.Angle、Quaternion.Euler、Quaternion.Slerp、Quaternion.FromToRotation 和 Quaternion.identity。(其他函数仅用于一些十分奇特的用例。)
您可以使用 Quaternion.operator * 对旋转进行旋转,或对向量进行旋转。
注意,Unity 使用的是标准化的四元数。
identity | 单位旋转(只读)。 |
eulerAngles | 返回或设置旋转的欧拉角表示。 |
normalized | 返回该四元数,并且量值为 1(只读)。 |
this[int] | 分别使用 [0]、[1]、[2]、[3] 访问 x、y、z、w 分量。 |
w | 四元数的 w 分量。请勿直接修改四元数。 |
x | 四元数的 X 分量。除非您十分了解四元数,否则不要直接进行此种修改。 |
y | 四元数的 Y 分量。除非您十分了解四元数,否则不要直接进行此种修改。 |
z | 四元数的 Z 分量。除非您十分了解四元数,否则不要直接进行此种修改。 |
Quaternion | 使用给定的 x、y、z、w 分量构造新的四元数。 |
Set | 设置现有四元数的 x、y、z 和 w 分量。 |
SetFromToRotation | 创建一个从 fromDirection 旋转到 toDirection 的旋转。 |
SetLookRotation | 使用指定的 forward 和 upwards 方向创建旋转。 |
ToAngleAxis | 将旋转转换为“角-轴”表示形式(角度以度为单位)。 |
ToString | 返回该四元数的整齐格式化的字符串。 |
Angle | 返回两个旋转 a 和 b 之间的角度(以度为单位)。 |
AngleAxis | 创建一个围绕 axis 旋转 angle 度的旋转。 |
Dot | 两个旋转之间的点积。 |
Euler | 返回一个旋转,它围绕 z 轴旋转 z 度、围绕 x 轴旋转 x 度、围绕 y 轴旋转 y 度(按该顺序应用)。 |
FromToRotation | 创建一个从 fromDirection 旋转到 toDirection 的旋转。 |
Inverse | 返回 rotation 的反转。 |
Lerp | 在 a 和 b 之间插入 t,然后对结果进行标准化处理。参数 t 被限制在 [0, 1] 范围内。 |
LerpUnclamped | 在 a 和 b 之间插入 t,然后对结果进行标准化处理。参数 t 不受限制。 |
LookRotation | 使用指定的 forward 和 upwards 方向创建旋转。 |
Normalize | 将此四元数转换为 1,方向相同,但量值为 1。 |
RotateTowards | 将旋转 from 向 to 旋转。 |
Slerp | 在四元数 a 与 b 之间按比率 t 进行球形插值。参数 t 限制在范围 [0, 1] 内。 |
SlerpUnclamped | 在 a 和 b 之间以球形方式插入 t。参数 t 不受限制。 |
operator * | 将旋转 lhs 和 rhs 组合到一起。 |
operator == | 两个四元数是否相等? |