質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VR

VRは、「Virtual Reality」の略。「人工現実感」や「仮想現実」などの意味を持ちます。VRゴーグルなどを装着してコンピュータでつくられた三次元空間を視覚などの感覚を通じ疑似体験できるようにした技術です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

2056閲覧

Unityで正面に進めない

murakame

総合スコア2

VR

VRは、「Virtual Reality」の略。「人工現実感」や「仮想現実」などの意味を持ちます。VRゴーグルなどを装着してコンピュータでつくられた三次元空間を視覚などの感覚を通じ疑似体験できるようにした技術です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/05/09 02:44

編集2021/05/09 10:50

前提・実現したいこと

unityのOculus(Quest2)を使用するVRの3dゲームで

グリップが握られていれば基本的には正面に移動
→もしコントローラーのスティックが倒されればその方向に視点を回転

というコードを書こうとしているのですが、試しにコードを書いてみるとなぜか斜め方向に移動してしまいます。

どのように直せば正面に進めるようになるか教えていただけないでしょうか。

発生している問題・エラーメッセージ

正面に進めない。

具体的には、初期のカメラの回転が(0,90,0)の状態で、スティックを1度も倒さずにグリップを握ると斜め右に進んでいきます。

該当のソースコード

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5 6public class PlayerMove : MonoBehaviour 7{ 8 float speed = 0.01f; 9 10 // Start is called before the first frame update 11 void Start() 12 { 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 if (OVRInput.Get(OVRInput.RawButton.LHandTrigger)) 19 { 20 Move(); 21 } 22 23 } 24 25 void Move() 26 { 27 28 Vector3 changerotation = new Vector3(0, 0, 0); 29 30 if (OVRInput.Get(OVRInput.RawButton.LThumbstickLeft)) 31 { 32 changerotation.y = -0.1f; 33 } 34 35 if (OVRInput.Get(OVRInput.RawButton.LThumbstickRight)) 36 { 37 changerotation.y = 0.1f; 38 } 39 40 //OVRCameraRigの回転 41 this.transform.rotation = this.transform.rotation * (Quaternion.Euler(changerotation)); 42 //OVRCameraRigの位置変更 43 this.transform.position += this.transform.rotation * new Vector3(speed,0,speed) ; 44 45 46 } 47 48 49} 50

補足情報(FW/ツールのバージョンなど)

Unity 2019.4.14f
Oculus Integration 28.0

###追加情報
VR関連のコード
if (OVRInput.Get(OVRInput.RawButton.LHandTrigger))  
・・・グリップが握られていると処理が走る
if (OVRInput.Get(OVRInput.RawButton.LThumbstickLeft)) 
・・・コントローラーのスティックが左に倒されていると処理が走る
if (OVRInput.Get(OVRInput.RawButton.LThumbstickRight))
・・・コントローラーのスティックが右に倒されていると処理が走る

現在OVRCamerarig(VR用のカメラ)にスクリプトがアタッチしてあり、これが一番上のオブジェクトです。
今正面を向いているはずなのですが、まっすぐ走ろうとすると右側の壁に衝突します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ayousanz

2021/05/09 06:43 編集

コードからOculusでの開発を行っていることはわかるのですが,初見だとすぐに把握できないのでOculusを使用したVR開発等を記述してください またタグにVR?を追加やversionのところにOculus Integrationのverを追加するなどをしてください
guest

回答2

0

自己解決

quaternion使って角度求めるところの式が間違っていました。
お騒がせしました。

投稿2021/08/26 15:05

murakame

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

移動が斜めになる問題ですが,そのスクリプトがアタッチされているところがどこなのかがわからないため推測になりますが親オブジェクトがy軸で傾いているのではないでしょうか?
もしくは,初めの向きがそもそも想定している向きではないため斜めに進んでいっていると感じているのではないでしょうか?

アタッチされているオブジェクトの画像の追加と親オブジェクトなどがありましたら,その情報も追加していただけるとほかの方も回答しやすくなると思われます.

投稿2021/05/09 06:45

ayousanz

総合スコア258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

murakame

2021/05/09 10:57

回答ありがとうございます。 追加情報のところにも書きましたが、今アタッチしているオブジェクトの親オブジェクトはありません。 はじめの向きも、この手のゲームを開発するのが初めてなので断言はできませんが、カメラの向きからしておそらくあっていると思います。 なにかお気づきの点や足りない情報等がありましたら教えてくださると助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問