Quaternion又称四元数,由x、y、z和w这4个分量组成,属于struct类型。在Unity中,用Quaternion来存储和表示对象的旋转角度。对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现。
ToAngleAxis方法:Quaternion实例的角轴表示
public void ToAngleAxis(out float angle,out Vector3 axis);
此方法用于将Quaternion实例转换为角轴表示,在transform.rotation.ToAngleAxis(out angle, out axis)中,输出值的含义为将对象的rotation从Quaternion.Identity状态转换为当前的状态,需延世界坐标系中axis轴向旋转angle角度。
提示 此方法通常和静态方法AngleAxis(float angle, Vector3 axis)一起使用。
Angle方法:Quaternion实例间夹角
public static float Angle(Quaternion a, Quaternion b);
此方法返回从参数a到参数b需要旋转的最小角度。相当于上面实例方法ToAngleAxis方法的第一个返回值。
Dot方法:点乘
public static float Dot(Quaternion a, Quaternion b);
此方法用于求参数a b的点乘,返回值范围为[-1, 1]。
当返回值为±1时,两个参数对应的欧拉角相等,即旋转状态一致。
当返回值为1时,两参数rotation相等。
当返回值为-1时,其中一个rotation比另一个多旋转了一周。
Euler方法:欧拉角对应的四元数
public static Quaternion Euler(Vector3 euler);
public static Quaternion Euler(float x, float y, float z);
此方法用于返回欧拉角Vector3对应的四元数实例。
Inverse方法:逆向Quaternion值
public static Quaternion Inverse(Quaternion rotation);
此方法用于返回参数rotation的逆向Quaternion值。
RotateTowards方法:Quaternion插值
public static Quaternion(Quaternion from, Quaternion to, float maxAngle);
此方法与lerp相似,但第三个参数为每帧最大旋转角度而不是系数。