2016-04-28 13 views
-1

申し訳ありませんが、私はすべてを試しましたが、Unity3DでGoogle Cardboardを使用してVRアプリケーションを作成しています。ヘッドオブジェクトの回転を設定しようとしています。 head1.transform.localRotationを印刷し、public CardboardHead head1;を使用してHeadオブジェクトを取得することで、Headオブジェクトの回転をコンソールに印刷できますが、他のオブジェクトと異なり、この回転を変更することはできません。しかし、私はちょうど頭オブジェクトの回転を変更したいUnityのGoogle Cardboard:ヘッドの回転を設定するにはどうすればよいですか?

if (trackRotation) { 
     var rot = Cardboard.SDK.HeadPose.Orientation; 
     if (target == null) { 
     transform.localRotation = rot; 

     } else { 
     transform.rotation = target.rotation * rot; 
     } 
    } 

そして私も、これらの値を変更しようとしている:

私はCardboardHeadスクリプトが継続的にオーバーライドし、ここで頭オブジェクトの回転を設定することを実現します私のゲームでラウンドが終了した後、ヘッドオブジェクトが特定の回転に「スナップ」するようにします(その後、ヘッドを回転させるとヘッドオブジェクトは通常のように回転します)

私は、どこかで(キャンバスに向かいたい)、ヘッドオブジェクトの回転を次のように変更しようとすると、

head1.transform.rotation = new Quaternion(0.0f,0.0f,0.0f,0.0f); 

または

head1.transform.localRotation = new Quaternion(0.0f,90.0f,70.0f,80.0f); 

何も起こりません。 Headオブジェクトは、最初に設定されたローテーション内に残ります(1.0,0.0,0.0,1.0)。どうしてこれなの?ユーザーがキャンバスに向かう/設定された方向を指すようにヘッドの回転を変更するにはどうすればよいですか?

答えて

0
head1.transform.localRotation = new Quaternion(0.0f,90.0f,70.0f,80.0f); 

私はこれが有効な四元数、より多くの可能性が高いオイラー回転である疑います:あなたの最高のショットは、それが回転を上書きしようとしないように、また、段ボールを無効にすることです

head1.transform.localRotation = Quaternion.Euler(90.0f,70.0f,80.0f); 

。あなたは、GoogleCardboardまたは状態に基づいて他のスクリプトをアクティブにするHeadControllerを持っています。そうすればGoogleCardboardもきれいに保つことができます。

+0

私は成功しなかったオイラーを試しました。どのように私はスクリプトを有効または無効にするでしょうか?ユーザーが元の位置に戻った後にGoogleCardboardの通常のヘッドトラッキングに戻したい場合は、タイマーを解除することをおすすめしますか? – skyguy

関連する問題