2016年6月13日 星期一

Unity內轉換Direction和EulerAngles為Quaternion

一般在3D間內有三種可表現方向的方式:
Direction:向量方式,例如( 1, 0, 0 )表示面向正左方。
EulerAngles:尤拉角(由拉角、歐拉角)方式,例如( 0, 180, 0 )表示面向正後方。
Qaternion:四元數。

Direction和EulerAngles都很好理解,而Qaternion即使我能理解它的原理,但還是不擅使用。
偏偏有不少關於方向的使用都得是Qaternion型式,所以轉換就很重要。

Direction轉換成Qaternion,可以使用Qaternion.LookRotation:
Qaternion LookRotation( Vector3 forward, Vector3 upwards = Vector3.up );
例如Qaternion rotation = Qaternion.LookRotation( new Vector3( 1, 0, 0 ), Vector3.up );

EulerAngles轉換成Qaternion,可以使用Qaternion.Euler:
Quaternion Euler( float x, float y, float z );
例如Quaternion rotation = Quaternion.Euler( 0, 30, 0 );

這樣當需要使用Quaternion時,我就可以用這些方式去轉換了。

沒有留言:

張貼留言