2017-08-10 4 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;