2017-08-10 101 views
0

我有一個傳感器。該傳感器返回當前方向的四元數。 我已經添加了復位的方向代碼,它完美的作品:重置傳感器方向

void KeyPressedHandler() 
{ 
    Quaternion CurrentQuat; 
    var state = this.adapter.GetState(); 
    CurrentQuat = state.Value; 

    if (Input.GetKeyDown(KeyCode.R)) 
    { 
     Quaternion StartPosition; 

     StartPosition.x = 0; 
     StartPosition.y = 0; 
     StartPosition.z = 0; 
     StartPosition.w = 1; 

     Offset = Quaternion.Inverse(CurrentQuat) * StartPosition; 
    } 
} 

void Update() 
{ 
    Quaternion CurrentQuat; 

    var state = this.adapter.GetState(); 
    CurrentQuat = state.Value* Offset; 
    transform.Rotation = CurrentQuat; 
} 

而且我發現了以下問題。如果我把傳感器放在一個水平桌子上並圍繞垂直的OZ軸旋轉,模型(在Unity中)也將圍繞OZ軸旋轉。然後我把傳感器放在側邊上,如果我圍繞OZ軸旋轉(OZ現在在水平面上),模型將以不同的軸旋轉。不是模型的OZ ...爲什麼?我如何保留傳感器和型號的軸?

+0

糟糕,如果沒有關於傳感器信息... – joreldraw

+0

軸系被綁定,除非在新位置不重置...如果傳感器放回臥式平面(OZ是垂直的)並重新定位,它的工作再次良好,傳感器的軸與模型軸相匹配 – Arthur

回答

0

應該是如下:

CurrentQuat = Offset*state.Value;