在unity中四元數和向量相乘可以變換旋轉。四元數之間相乘類似矩陣之間相乘的效果。
矩陣相乘的順序不可互換,只有特殊條件矩陣才可互換。四元數相乘類似,今天就因為這個問題掉進坑里了,記錄一下
問題大致是,有一個cube,它會看向左邊的板,用角軸旋轉,但我想要y軸看向它
Quaternion.AngleAxis(-90, Vector3.forward);

以下代碼就是沒有注意相乘順序導致的結果
var quat1 = Quaternion.AngleAxis(-90, Vector3.forward); var quat2 = Quaternion.AngleAxis(Time.time * 180, referenceTransform.forward); transform.rotation = quat1 * quat2;

修改后正確結果如下
transform.rotation = quat2 * quat1;

所以在處理四元數或者矩陣相乘操作時,注意順序,並且避免xxx*=quat這樣的操作,盡量用直觀寫法
