Unity旋轉值Quaternion交換旋轉軸

2021-10-09 07:20:06 字數 620 閱讀 3706

最近專案上用到一款ar眼鏡,其陀螺儀的給出的旋轉值與預期有差異。如戴上眼鏡左右轉動頭部時,視角卻是沿著臉部朝前的軸旋轉的。經過整理發現陀螺儀與unity相機各軸正確對應關係如下:

x(陀)->-x(相),y(陀)->-z(相),z(陀)->-y(相)。

那麼,怎麼變換呢。

最簡單直接的方式是這樣的,不過這種方式是錯誤的,達不到想要的效果。

vector3 angle =  gyro.attitude.eulerangles;

camera.transform.localrotation = quaternion.euler(new vector3(-angle.x, -angle.z, -angle.y));

正確的方式

quaternion output;

output.x = -gyro.attitude.x;

output.y = -gyro.attitude.z;

output.z = -gyro.attitude.y;

output.w = gyro.attitude.w;

camera.transform.localrotation = output;

unity 物件旋轉,自轉

1.物件具體的圍繞哪個軸旋轉,對應的設定值 transform.rotate new vector3 1,0,0 繞x軸旋轉 預設是物體圍繞世界座標的xyz軸旋轉,即物體繞著世界中心0,0,0的y軸進行旋轉。該語句相當於transform.rotate new vector3 1,0,0 space...

Unity程式設計 Unity中的尤拉旋轉

是z 軸與z 軸的夾角,是交點線與x 軸的夾角。xyz代表了三個角度,它們定義了一組有序的旋轉,即圍繞z軸旋轉z度,然後圍繞x軸旋轉x度,然後圍繞y軸旋轉y度。你應該只去讀取或者直接設定這些數值,不要增加它們,因為當角度超過360度將會失敗。應該使用transform.rotate去替代執行旋轉操作...

Unity簡單鏡頭旋轉縮放

摘自 以目標為中心旋 rotation x input.getaxis mouse x 速度平滑係數 rotation y input.getaxis mouse y 速度平滑係數 滑鼠往下要作的是抬頭動作,比較符合人類的認知習慣 所以 y是 與滑鼠運動的反方向 transform.rotation...