2022-08-03|閱讀時間 ‧ 約 3 分鐘

Unity C# | Quaternion & EulerAngles

前言

  這篇文章將會講述在Unity中跟角度有關的兩項變數有什麼樣的地位和運作方式,我們只要撰寫跟角色角度有關的程式碼,就絕對不會繞開這兩個變數。

Quaternion | 四位數

  四位數可用於表示 GameObject的方向或旋轉,內部包含四個數字,分別代表 x, y, z, w,但這些數字不表示角度或軸,因此通常不需要接訪問他們,因此只需要知道四元數表示 3D空間中的旋轉,不需要直接修改這些值。
  更為直白的說法,四位數是角度的語言,我們使用歐拉角然後請系統翻譯成角度看得懂的格式就可以了。

Quaternion.LookRotation
  接下來會用到簡單的數學原理,我們需要找到標示目標向量的位置,這項函數可以讓物件轉面向目標位置。
Vector3 Direction  = target.position - this.transform.position;
Quaternion rotation = Quaternion.LookRotation(Direction);
this.transform.rotation = rotation;

Quaternion.Euler
  這是其中一個我們不需要了解 Quaternion的例子,因為我們只需要使用這個函式,並輸入我們容易理解的歐拉角即可。
Quaternion rotation = Quaternion.Euler(0, 30, 0);

EulerAngles | 歐拉角

  更加值觀的表現方式,是我們在 Unity 看到的Rotation,具體的旋轉使用歐拉角是更加方便的一種方式。
public Vector3 eulerAngles;
public Vector3 localEulerAngles;

使用方式
   Quaternion 是值得儲存方式,Euler 是值的呈現方式,所以在程式運用中會更常使用Quaternion去做值的換算,而非使用 Euler ,因為Quaternion本身就包含 Euler 相關的函式。

後記

  當初在學習到這方面的知識時,是跟著一步一步做出來,然後才去慢慢理解內容物有那些東西,在一次次修改程式碼的過程中,也對這些數值和運算流程更加清楚,也更能搞懂自己在學什麼。

參考資料

Unity API | Quaternion

Unity API | Euler

分享至
成為作者繼續創作的動力吧!
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
© 2024 vocus All rights reserved.