2017-12-01 2 views
0

Ich schrieb ein Skript, das dem Benutzer ermöglicht, zwischen zwei Punkten zu teleportieren, indem er bestimmte Objekte betrachtet. Insbesondere wird anhand eines Strahls überprüft, ob sich eines der beiden Objekte in der Mitte des Bildschirms befindet. Es funktioniert mit dem Standard FPSController (unter der Hauptkamera) und den Maussteuerungen. Wenn ich die VR-Unterstützung aktiviere, funktioniert die Erkennung nicht mehr (nicht nur für den Mittelpunkt, sondern für die gesamte Anzeige). Was sollte ich meinem Skript hinzufügen, damit es mit Oculus genauso funktioniert wie mit der Maus?Wie bekomme ich einen RaycastHit, um mit einem HMD in Unity zu arbeiten?

Dieser Code funktioniert durch Objekte mit Namen zu erfassen und dann zugeordneten Objekten nach Tag Teleportation:

using UnityEngine; 
using System.Collections; 
using UnityEngine.VR; 

public class lookTeleport : MonoBehaviour 
{ 
    public GameObject destination; 
    public Transform target; 
    RaycastHit hit; 
    Ray ray; 

    void Start() 
    { 
     Cursor.lockState = CursorLockMode.Locked; 
    } 

    void Update() 
    { 
     ray = Camera.main.ScreenPointToRay(Input.mousePosition); //mouse control 
     if (Physics.Raycast(ray, out hit)) 
     { 
      if (hit.collider.gameObject.name == "teleporterA") 
      { 
       //Debug.Log("teleporter A detected"); 
       destination = GameObject.FindWithTag("teleportY"); 
       transform.position = destination.transform.position; 
      } 
      if (hit.collider.gameObject.name == "teleporterB") 
      { 
       //Debug.Log("teleporter B detected"); 
       destination = GameObject.FindWithTag("teleportX"); 
       transform.position = destination.transform.position; 
      } 
     } 
    } 
} 

Ich denke, ich werde Input.MousePosition mit dem VR-äquivalent zu ersetzen suchen.

Antwort

0

Sie ersetzen sollte ray = Camera.main.ScreenPointToRay(Input.mousePosition);
mit ray = Camera.main.ScreenPointToRay(new Vector2(Screen.height/2, Screen.width/2));
Da Sie in VR sind, und keine Maus verwenden, kann der Input.mousePosition nicht als Bildschirm-Punkt verwendet werden, um den Strahl von zu werfen, anstatt könnten Sie die Mitte verwenden von der Bildschirm, den der Benutzer sieht (wie Fadenkreuze)

Verwandte Themen