Input.acceleration 的判讀

行動裝置都有一個用來判斷畫面朝向的機能,在Unity中要取用這個機能就要使用Input.acceleration

Acceleration所回傳的數值是一個三維向量Vector3
也就是一個XYZ的組合

但是究竟怎麼樣才能知道什麼方向是什麼數值呢?
1.確認"遊戲正向",也就是遊戲畫面的實際方向,然後再以這個朝向去定義XYZ軸。也就是說 X永遠在"遊戲正向"的右邊,然後再去定義其他兩軸,注意Z軸往畫面的方向才是正值。
圖片中代表兩種直版跟橫版的正向

2.把裝置的三個邊想像成這三條線該軸向如果「跟重力同方向」就會是1,反之則-1 ,若「垂直於重力」則為0

3.以左上圖為例,這時候的值就是(0,-1,0),因為只有Y軸與重力相反,其他軸與之垂直

4.如果差不多在45度角的位置,並不會是(0.5 , 0.5 , 0),而是(0.7 , 0.7 , 0)左右, 因為sin 45 = 0.7

整體來說,就是以「軸向在3D空間中與重力軸(正向下)的角度關係」,而這數值一定介於-1~1