首页 > 代码库 > Unity API 解析(8)—— Quaternion 类

Unity API 解析(8)—— Quaternion 类

四元数 —— 由x,y,z 和 w 这4个分量组成,属于struct 类型

用来存储和表示对象的选择角度

 

eulerAngles 属性 —— 欧拉角

对GameObject 对象的Transform进行欧拉角的变换次序是,先绕z轴旋转相应的角度,再绕x轴旋转相应的角度,最后y轴 —— 不同的旋转次序得到的最终状态不同

using UnityEngine;using System.Collections;public class EulerAngle_ts : MonoBehaviour{    public Transform A, B;    Quaternion rotations=Quaternion.identity;    Vector3 eulerAngle = Vector3.zero;    float speed = 10.0f;    void Update()    {        //第一种方式,将Quaternion 赋值给 transform的rotation        rotations.eulerAngles = new Vector3(0.0f, speed * Time.time, 0.0f);        A.rotation = rotations;        //第二种方式,将三维向量代表的欧拉角直接赋值给 transform的eulerAngles        eulerAngle = new Vector3(0.0f, speed * Time.time, 0.0f);        B.eulerAngles = eulerAngle;    }}

SetFromToRotation —— 创建rotation实例

用于创建一个从fromDirection到toDirection的rotation

不可直接使用 transform.rotation.setFromToRotation(v1,v2) 方式进行设置,只能将实例化的Quaternion 赋值给 transform.rotation

using UnityEngine;using System.Collections;public class SetFromToRotation_ts : MonoBehaviour {    public Transform A, B, C;    Quaternion q1 = Quaternion.identity;		void Update () {        //不可直接使用 C.rotation.SetFromToRotation(A.position,B.position);        q1.SetFromToRotation(A.position,B.position);        C.rotation = q1;        Debug.DrawLine(Vector3.zero,A.position,Color.red);        Debug.DrawLine(Vector3.zero, B.position, Color.green);        Debug.DrawLine(C.position, C.position+new Vector3(0.0f,1.0f,0.0f), Color.black);        Debug.DrawLine(C.position, C.TransformPoint(Vector3.up*1.5f), Color.yellow);	}}

SetLookRotation  —— 设置Quaternion 实例的朝向

Quaternion q1 = Quaternion.identity;

q1.SetLookRotation(v1,v2);

transform.rotation = q1;

transform.forward 方向与v1方向相同

transform.right 垂直于Vector3.zero ,v1 和 v2 这3点构成的平面

不可以直接使用 transform.rotation.SetLookRotation(v1,v2) 的方式来使用,应该实例化一个Quaternion然后对其使用SetLookRotation 最后赋值给transform.rotation

ToAngleAxis —— Quaternion 实例的角轴表示

此方法通常和静态方法 AngleAxis(angle:float , axis : Vector3) 联合使用,使得一个物体的rotation 始终和另一个物体的rotation保持一致

Angle —— Quaternion 实例间夹角

用于返回从参数a到参数b变换的夹角 —— 返回的夹角不是某个局部坐标轴向变换的夹角,而是GameObject 对象从状态a转换到状态b使需要旋转的最小夹角

Dot —— 点乘

Euler —— 欧拉角对应的四元数

返回欧拉角Vector3 对应的四元数实例

FromToRotation —— Quaternion 变换

Inverse —— 逆向Quaternion的值

Lerp —— 线性插值

LookRotation —— 设置Quaternion的朝向

Slerp —— 球面插值

Unity API 解析(8)—— Quaternion 类