###実現したいこと
uGUIの様に、レーザーを用いてオブジェクトをクリックするモーションを作りたいです。
そのため、常時ポインターを表示させ、その状態でユーザーがオブジェクトをコントローラーボタンでクリックできる様に試みています。
そこで、
①試したことの改善で実現できるか
②uGUIを用いて実現できるか
をご教示頂きたいです。
試したこと
1.EventSystem
にOVRInputModule
をアタッチし、RayTransform``````RightHandAnchor
を追加
2. PysicsPointer
オブジェクトを作り、Camera
をオフにし、PysicsRaycaster
、LineRenderer
、PysicsPointer
スクリプトをアタッチ
3. PysicsPointer
にRightHandAnchor
を追加
発生している問題
コントローラー操作前には短いポインターが表示され(画像1)、コントローラーの中指ボタンを押した時にポインターが表示されます(画像2)。
画像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です
浅学ですが、何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー