2017-09-08 5 views
1

私の単純なプロジェクトをVRゲームに変換しようとしています。現在、それは前方にズームする単なるオートバイであり、プレーヤーはサイクルを操縦するためにAまたはD(または左右)を使用することができます。ユニティGoogle VR - アンドロイドデバイスからローテーション、ヨー、ピッチの値を取得

ここに私のコードは、これまでのところです:私はGoogleVR SDKのv1.70.0をインポートし、私はVRに自分の携帯電話でゲームを表示しても、触れることなく見て回ることを可能にする、プレハブを追加しました

void Start() { 
    cycleSphere = GetComponent<Rigidbody>(); 
} 

void Update() { 
    inputX = Input.GetAxis("Horizontal"); 
} 

void FixedUpdate() { 
    if (currentSpeed < maxSpeed) 
     currentSpeed += acceleration; 

    if (currentSpeed > 0) 
     cycleSphere.transform.Rotate (0, inputX, 0); 

    cycleSphere.velocity += transform.forward * currentSpeed; 
} 

コード。

プレーヤーが頭を左右に傾けると、サイクルがそれぞれの方向に回転するようにしたいと思います。それ、どうやったら出来るの? Input.Gyroを使用しますか?

+0

GoogleVRやプラグインなし: 'transform.localRotation = Quaternion.Lerp(transform.localRotation、InputTracking.GetLocalRotation(VRNode.CenterEye)、Time.deltaTime);' UnityEngine.VR'をインポートすることを忘れないでください。 UnityのVR APIを内蔵しているので、GoogleVRや他のプラグインを使用することをお勧めしますが、現在は小規模/小規模であり、たくさんありません。 – Programmer

+0

@Programmer、まあ、私はGoogleVRを使用しています。しかし、私は電話のローテーション値をどこでどのように使うべきか分かりません。ドキュメントはまあまあです。 –

+0

私はGoogleVRを使用せず、VRで始めることすらしていないと言及して忘れてしまった。 YoutubeやGoogleVR SDKに付属しているサンプルシーンを確認することができます。 – Programmer

答えて

1

私は私はあなたの耳はあなたの肩に触れるように、左に頭を傾ける、のように頭を傾けることは(選手を操縦するだろう、プレイヤーが操縦するでしょうバーチャルリアリティでパックマンを作った、前にこれに似た何かをやりました、 およびその逆)。

それは例えば Input.acceleration

を使用して、あなたはこのような単純なもの行うことができなかった私は

:基本的に

void Update() 
{ 
    transform.Rotate(0f, Input.acceleration.x * acceleratorSensitivity, 0f); 
} 

を、あなたは(あなたの頭の傾斜されるであろう)お使いのデバイスのX回転を取ります、感度を適用する(感度が高いほど旋回が速くなります)、それに応じて変換を回転させます。 :-)

私はまた、すべてのデバイスは、ジャイロスコープが含まれていますが、デバイスの大半は(その基本的なレベルでは、画面を回転させる)加速度計が含まれているとして、このアプローチは、ジャイロスコープを使用するよりも優れていると思います。

+0

まあ、とにかくジャイロが必要なVRゲームを作っています。しかし、これは動作します、ありがとう! –

+0

うれしいです!ちょっとメモ - これを公開しようとしている場合、ジャイロスコープを持っているかどうかをユーザーに知らせるジャイロチェックをゲームにおすすめします。最初は、私はこのチェックをしていませんでした。ゲームが壊れていたと思ったので、私のゲームは多くの否定的な評価を受けました - 実際、彼らのデバイスはジャイロを持っていませんでした。ジャイロと加速度計を使用してこのような単純なものを作っているなら、360度ヘッドチルトを完全にしたいときは、ジャイロチェックを実装することをお勧めします! :-) – Tom

関連する問題