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

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

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

VIVEは、VR向けヘッドマウントディスプレイです。センサーによって部屋自体をVR空間にするルームスケールが大きな特徴。プレイヤーはその空間を自由に歩き回ることが可能なため、高い没入感を体験できます。

Unity

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

Q&A

0回答

1357閲覧

post-process Layerをadd componentするとVIVEコントローラで移動できなくなる

hot

総合スコア5

VIVE

VIVEは、VR向けヘッドマウントディスプレイです。センサーによって部屋自体をVR空間にするルームスケールが大きな特徴。プレイヤーはその空間を自由に歩き回ることが可能なため、高い没入感を体験できます。

Unity

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

0グッド

0クリップ

投稿2020/06/21 12:38

下記に記載したURL➀を参考にゲーム内をVIVEコントローラで移動するコードを書きました。酔いを軽減したく、下記URL➁を参考にCameraRigにPost-process Layerをadd componentしたところ、VIVEコントローラで移動ができなくなってしまいました。Post-process Layerをremoveしても動きません。
動かなくなってしまった原因とどうすれば視野を狭めたまま、VIVEコントローラで移動できるようになるか教えていただけないでしょうか。

➀ VIVEコントローラで移動
https://qiita.com/Maron_Vtuber/items/0b67411fb29139d0faee

➁ 視野を狭めて酔いを軽減する
https://qiita.com/OKsaiyowa/items/9d26a2a86013f08d5914

環境
Windows10
Unity 2019.2.15f
SteamVR 1.12.5

Unity

1using UnityEngine; 2using Valve.VR; 3 4public class PlayerController : MonoBehaviour 5{ 6 public SteamVR_Input_Sources lefthandType; 7 public SteamVR_Input_Sources righthandType; 8 public SteamVR_Action_Boolean teleport; 9 public SteamVR_Action_Vector2 direction; 10 public Transform _VRCamera; 11 public float _Movespeed = 3f; 12 public float _Rotspeed = 2f; 13 14 void Update() 15 { 16 if (CheckGrabLeft()) 17 { 18 Move(); 19 } 20 if (CheckGrabRight()) 21 { 22 Rotate(); 23 } 24 } 25 26 private void Move() 27 { 28 // HMD(=カメラ)の向いている方向から上下左右に水平方向に進む 29 // 進む方向はCheckDirectionLeft()で計算する 30 this.transform.position += _Movespeed * Vector3.ProjectOnPlane(CheckDirectionLeft(), Vector3.up) / 100; 31 } 32 private void Rotate() 33 { 34 // HMD(=カメラ)位置を中心として左右に回転する 35 // 左右の判定はCheckDirectionRight()で計算する 36 this.transform.RotateAround(_VRCamera.position, Vector3.up, _Rotspeed * CheckDirectionRight()); 37 } 38 private bool CheckGrabLeft() 39 { 40 return teleport.GetState(lefthandType); 41 } 42 private bool CheckGrabRight() 43 { 44 return teleport.GetState(righthandType); 45 } 46 private Vector3 CheckDirectionLeft() 47 { 48 // タッチパッドのタッチ位置をVector2で取得 49 Vector2 dir = direction.GetAxis(lefthandType); 50 if (Mathf.Abs(dir.y) >= Mathf.Abs(dir.x)) 51 { 52 // Y方向の絶対値の方が大きければ、HMD(=カメラ)に対して前か後ろ方向を返す 53 return Mathf.Sign(dir.y) * Vector3.RotateTowards(new Vector3(0f, 0f, 1f), _VRCamera.forward, 360f, 360f); 54 } 55 else 56 { 57 // X方向の絶対値の方が大きければ、HMD(=カメラ)に対して右か左方向を返す 58 return Mathf.Sign(dir.x) * Vector3.RotateTowards(new Vector3(1f, 0f, 0f), _VRCamera.right, 360f, 360f); 59 } 60 } 61 private float CheckDirectionRight() 62 { 63 // タッチパッドのタッチ位置をVector2で取得 64 Vector2 dir = direction.GetAxis(righthandType); 65 if (Mathf.Abs(dir.y) >= Mathf.Abs(dir.x)) 66 { 67 // Y方向の絶対値の方が大きければ、回転量=0を返す 68 return 0f; 69 } 70 else 71 { 72 // X方向の絶対値の方が大きければ、回転量= 1か -1を返す 73 return Mathf.Sign(dir.x); 74 } 75 } 76}

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問