0

ゲームパッドを介してカメラ オブジェクトの回転を変更したいと思います。エディターでは機能するが、iOS では機能しないコードがあります。(ただし、動作しているように見えますが、VROne コードによって 2 番目のフレームに押し戻されています)。

Rift ではこれを機能させることができましたが、VROne ではまだ理解できていません。Rift では、GamePad ジョイスティックによって変更された回転に「オフセット」を追加しました。オフセットは、プレーヤーの視線方向も含む最終的な回転に計算されました。

これを VROne SDK で適切に動作させるには、コードのどの部分を変更すればよいでしょうか?

4

3 に答える 3

0

(ゲームパッドから) 独自の GameRotation 角度を使用する場合、統合された HeadTracking によって値が上書きされる可能性があります。VROneSDKHead オブジェクトで、VR ヘッド トラッキング スクリプトを無効にしてみましたか?

HeadTracking の角度は、ネイティブの静的ライブラリを呼び出す HeadTrackingIOS クラスで処理されます。43 行目に返されたクォータニオンにゲームパッド オフセットを追加してみてください。

これが役に立てば幸いです。うまくいったかどうかお知らせください。

于 2014-12-18T12:11:15.313 に答える
0

編集: 気にしないでください。以下のコードはエディターで機能しますが、iOS デバイスではカメラが強制的に先に進められます。私は他の答えを試してみます。

かっこいい - それはうまくいくかもしれません、上記の答え。それは私が探していたもののように聞こえます。

ただし、Unity フォーラムの提案に従って、この解決策を実装しました。最初に、VROne オブジェクトを、localPosition 0,0,0 を持つ別の空のゲーム オブジェクトの子にしました。

回転時に親を回転させますが、最初に親が子と同じ位置にあることを確認し、次に子の localPosition が 0,0,0 であることを確認します - 今、子は物理的な動きをしており、親は回転を行っています. キャラクターコントローラーを親に移動することがうまくいくかどうか、またはSDKで何か他のものをファンキーにするかどうかはわかりませんが、これは今のところうまくいくようです.

if (RightStickX.Value != 0)
{
    transform.position                      = childObject.transform.position;
    childObject.transform.localPosition     = Vector3(0,0,0);
    transform.eulerAngles.y += RightStickX.Value * rotationSpeed * Time.deltaTime;
}
于 2014-12-18T23:26:30.663 に答える
0

これが誰かを助ける場合に備えて、私はそれをもっと簡単な方法で解決することができました.

VrOneSDK オブジェクトは、ゲームパッドで回転させているオブジェクトの子です。そして、「vrHeadTracking.cs」で単純に変更しました

transform.rotation = Quaternion.Inverse(initialRotation) * rot;

transform.localRotation = Quaternion.Inverse(initialRotation) * rot;

そうすれば、頭の追跡は親オブジェクトの回転に相対的になります。

于 2015-04-20T19:32:01.450 に答える