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

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

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

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

Unity3D

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

Oculus Rift

Oculus Riftは、ゲームに特化した広視野角バーチャルリアリティヘッドマウントディスプレイ です。そのため、バーチャルリアリティ・ゲームで使用するのを第一目的として開発されています。

Q&A

解決済

3回答

3122閲覧

C# Unity5+Oculus Riftでの方向検知とカメラ移動(向いてる方向に進む)

SwiftXcodeApp

総合スコア27

C#

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

Unity3D

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

Oculus Rift

Oculus Riftは、ゲームに特化した広視野角バーチャルリアリティヘッドマウントディスプレイ です。そのため、バーチャルリアリティ・ゲームで使用するのを第一目的として開発されています。

0グッド

0クリップ

投稿2016/12/27 17:10

編集2016/12/28 02:43

OculusRiftが向いている方向に進むというのを実装したいです。
進む瞬間はある条件が満たされた場合とし、
if文のカッコ内で移動プログラムが実行されるものとします。

自分でやったのは、

C#

1public class move : MonoBehaviour { 2 3CharacterController controller; 4public float a = 0f; 5public float speed = 1.6f; 6 7void Update () { 8if (a == 1f) { 9 this.transform.rotation = Quaternion.Euler(0, move.rotation.eulerAngles.y, 0); 10 controller.Move(Vector3.forward * speed * Time.deltaTime); 11 } 12 } 13}

というような感じです。
しかし、一切向いた方向に動く気配はなく、z軸に沿って進んでいくだけでした。

何かわかる方がいましたら教えてください。

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

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

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

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

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

guest

回答3

0

回答ありがとうございます。

2人の言う通り
座標系でとifの動くタイミングがおかしかったです。

解決しました。ありがとうございます。

投稿2016/12/28 03:05

SwiftXcodeApp

総合スコア27

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

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

0

直接の回答ではないのですが、一度デバッグ用のラインを表示してみて、意図している方向にベクトルがちゃんと向いているか確認してみるといいかなと思いました。
(そして意図している方向にベクトルが向いているなら、あとはその方向ベクトルに沿って移動させるだけで動くはずなので)

ちなみにラインは、Debug.DrawLine メソッドで実行可能です。

投稿2016/12/28 02:31

edo_m18

総合スコア2283

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

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

SwiftXcodeApp

2016/12/28 02:38

回答ありがとうございます。 ベクトルというのはZ軸+方向で合っていますよね? OculusRiftの向いてる方向は常時Z軸+方向で表示されています。
edo_m18

2016/12/28 02:48

ここで書いたベクトルは、「進ませたい方向」のことでした。 そして、カメラの向いている方向が常時、ワールド空間のZ+方向なんですか? Oculus Riftがつながっている場合はデバイスからの向きが随時反映されて方向が変わっていると思うのですが・・。
SwiftXcodeApp

2016/12/28 02:51

はい。 カメラの向いてる方向が常時Z軸方向です。 また、OculusRiftで頭を回転させるとZ軸方向は動きます。
edo_m18

2016/12/28 02:54

あ、ワールドではなく、親のゲームオブジェクト空間内でZ軸+方向ということですか? ちょっと勘違いしているかもしれません・・。 オブジェクトの階層構造も一緒に示してくれるとなにか解決の糸口になるかもしれません。
SwiftXcodeApp

2016/12/28 02:59

EmptyObject MainCamera という感じです。 向いてる方向はMainCameraのZ軸方向に示されています。
guest

0

ベストアンサー

Vector3.forward <- (0,0,1)
this.transform.forward <- 正面

投稿2016/12/28 00:01

ozwk

総合スコア13521

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

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

SwiftXcodeApp

2016/12/28 01:37

回答ありがとうございます。 しかし、Z+方向、X-方向には動くのですが、後ろも向いて実行させても動きません、、 何か間違っているのでしょうか?
ozwk

2016/12/28 01:48 編集

OculusRiftが向いている方向が 意図通りに取れていることを確認しましたか? また、変な方向に動くならともかく、動かないとなると、 そもそもif文の中に入っているか怪しいんですが、どうでしょう。
SwiftXcodeApp

2016/12/28 02:02

動く際に実行されるプログラムは、 ・・・C# this.transform.rotation = Quaternion.Euler(0, move.rotation.eulerAngles.y, 0); this.transform.rotation = InputTracking.GetLocalRotation(VRNode.CenterEye); controller.Move(this.transform.forward * speed * Time.deltaTime); ・・・ です。 Zーに行かないというような感じでしょうか、、 EmptyなGameObjectの下にOculusRiftのカメラが入ってます。 スクリプトはOculusRiftのカメラだけに接続しています。 また、そのスクリプトでは Updata関数の外に(ifの外でもある) public GameObject Player; としてあり、Start関数で controller = Player.GetComponent<CharacterController>(); としています。 そして、カメラは向いてる方向に常時Z軸が向いており、 その上位層であるEmptyGameObjectの向きは一切動いてません。 しかしZ+/X-には向いてる方向に進み、それ以外は向いてる方向に進まず止まったままです。 長文すいません、、
ozwk

2016/12/28 02:44

> カメラは向いてる方向に常時Z軸が 何のZ軸ですか?
SwiftXcodeApp

2016/12/28 02:48

OculusRiftのカメラです。 言葉が足りなくてすいません、
ozwk

2016/12/28 02:55

動かないとき、そもそもif文に入ってますか?
SwiftXcodeApp

2016/12/28 02:58

if文の中は私が実行した時は実行されています。 print("a"); で見ています。 また、 this.transform.rotation = Quaternion.Euler(0, move.rotation.eulerAngles.y, 0); this.transform.rotation = InputTracking.GetLocalRotation(VRNode.CenterEye); controller.Move(this.transform.forward * speed * Time.deltaTime); はif文に入っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問