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

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

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

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

Oculus Quest

Oculus Questは、Facebookの小会社であるOculus VRが開発したVRヘッドセットです。独立型でPCやスマートフォンは不要。6DoFのトラッキングに優れている点が特徴です。すでに販売終了となっていますが、2020年10月には後継のOculus Quest 2が販売されています。

C#

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

Unity3D

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

Unity

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

Q&A

解決済

1回答

2790閲覧

oculusで常時コントローラーのポインターを表示させたい(unity)

pokky02060

総合スコア0

VR

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

Oculus Quest

Oculus Questは、Facebookの小会社であるOculus VRが開発したVRヘッドセットです。独立型でPCやスマートフォンは不要。6DoFのトラッキングに優れている点が特徴です。すでに販売終了となっていますが、2020年10月には後継のOculus Quest 2が販売されています。

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2021/04/02 10:02

編集2021/04/02 10:29

###実現したいこと

uGUIの様に、レーザーを用いてオブジェクトをクリックするモーションを作りたいです。
そのため、常時ポインターを表示させ、その状態でユーザーがオブジェクトをコントローラーボタンでクリックできる様に試みています。
そこで、

①試したことの改善で実現できるか
②uGUIを用いて実現できるか

をご教示頂きたいです。

試したこと

1.EventSystemOVRInputModuleをアタッチし、RayTransform``````RightHandAnchorを追加

2. PysicsPointerオブジェクトを作り、Cameraをオフにし、PysicsRaycasterLineRendererPysicsPointerスクリプトをアタッチ

3. PysicsPointerRightHandAnchorを追加

発生している問題

コントローラー操作前には短いポインターが表示され(画像1)、コントローラーの中指ボタンを押した時にポインターが表示されます(画像2)。
画像1
画像1
画像2
イメージ説明

該当のソースコード

C++

1//PysicsPointer.cs 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6 7public class PhysicsPointer : MonoBehaviour 8{ 9 public float defaultlength = 3.0f; 10 private LineRenderer lineRenderer = null; 11 public Transform rightHandAnchor = null; 12 13 private void Awake(){ 14 lineRenderer = GetComponent<LineRenderer>(); 15 } 16 17 void Update() 18 { 19 Ray laserPointer = new Ray(rightHandAnchor.position, rightHandAnchor.forward); 20 21 lineRenderer.SetPosition(0, laserPointer.origin); 22 lineRenderer.SetPosition(1, CalculateEnd(laserPointer)); 23 } 24 25 26 private Vector3 CalculateEnd(Ray ray){ 27 RaycastHit hit = CreateForwardRaycast(ray); 28 Vector3 endPosition = DefaultEnd(defaultlength, ray); 29 30 if(hit.collider){ 31 endPosition = hit.point; 32 } 33 return endPosition; 34 35 36 } 37 38 private RaycastHit CreateForwardRaycast(Ray ray){ 39 RaycastHit hit; 40 Physics.Raycast(ray, out hit, defaultlength); 41 42 return hit; 43 } 44 45 private Vector3 DefaultEnd(float length, Ray ray){ 46 47 return ray.origin + (rightHandAnchor.forward * length); 48 } 49} 50 51

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

unityバージョンは2019.4.16f1です

浅学ですが、何卒よろしくお願い致します。

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

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

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

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

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

ayousanz

2021/04/03 12:54

ちょっとOculus Scriptを詳しく確認していないので,どの部分とは言えませんが中指を押したときにポインタが見えるのであれば常に押した状態にするようにスクリプト上で変更すればいいのではないでしょうか?
guest

回答1

0

自己解決

![イメージ説明
原因は分かりませんが、PysicsPointerオブジェクトのベクトルを手の内側に30°傾けたところ、無事表示される様になりました。指にRayCasterが当たっていたのでしょうか...?

ayousanz様有難うございました。

投稿2021/04/04 12:24

pokky02060

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問