2016-03-20 14 views
0

私はユニティを使用してモバイルゲームを手掛けています。これは、ジャイロスコープを使用して空間内の携帯電話の向き/回転を取得することを含む。私はC#で2つのQuaternionsを比較するのに苦労してきました。私は実際に何をしようとしているモバイルゲームの2つのクォータニオンの比較

transform.rotation = Input.gyro.attitude;  // Take the gyroscope rotation data and copy it 
transform.rotation.Set(0, 0, 0, 1);    // change current Quaternion rotation data of the copy 
               // Copy shoud now represent a vertical rotation 
Angle = Quaternion.Angle(Input.gyro.attitude,); // Calculate the Angle between the 2 
if (Angle < 45)         // if it's almost in vertical postion start the game 
    /* do something */ 

は、携帯電話が垂直位置にある場合(のようなあなたがあなたの額に貼り付けた場合)を検証である:ここに私のコードです。私は元のオリエンテーションのコピーを作成し、それを私が望むものに変更します。その後、私は2つを比較し、それらがほぼ同じであればゲームを続けることができます。四元数についてはほとんど知らない。私はw、x、y、zの四元数の値が垂直方向を表すべきであるが、googleで検索している間に手がかりを見つけることができなかったことを知ろうとしました。だから、私はここで助けを求めているのです。

答えて

0

携帯電話が縦向きになっているかどうかを確認しようとしています。

私はあなたが得るために探している正確にどのように正確にわからないんだけど、それは単にあなたが決定したいすべてのであれば、次のことを試してください。

if (Screen.orientation == ScreenOrientation.LandscapeLeft) { 
    // screen is horizontal 
} 
+0

私が探している何ではありません画面の向きは、しかし、携帯電話自体の方向の詳細。 Screen.orientation btwありがとうございました。私のゲームを水平のみに設定するのに便利でした:) –