- Home /
Issue with clicking with a crosshair while using Oculus Rift
Hello,
I'm attempting to create some scripting in Unity that will allow me to interact with buttons in the environment while using the Oculus Rift headset. I currently have a crosshair that uses raycasting to place itself on the object that the player is currently looking at. However, I'm having trouble writing code to detect when the player clicks the mouse while the crosshair is over an object. What can I do to allow this interaction?
The code I have right now is posted below:
public class Reticle : MonoBehaviour {
// Use this for initialization
public Camera CameraFacing;
public GameObject button;
public RaycastHit hit;
private Vector3 originalScale;
void Start () {
originalScale = this.transform.localScale;
}//end Start
// Update is called once per frame
void Update () {
float distance;
if (Physics.Raycast (new Ray(CameraFacing.transform.position, CameraFacing.transform.rotation * Vector3.forward * 4.0f), out hit))
{
distance = hit.distance;
} else {
distance = CameraFacing.farClipPlane * 0.95f;
}//end if
this.transform.position = CameraFacing.transform.position + CameraFacing.transform.rotation * Vector3.forward * distance;
this.transform.LookAt(CameraFacing.transform.position);
this.transform.Rotate (0.0f, 180.0f, 0.0f);
this.transform.localScale = originalScale * distance;
}//end Update
void OnMouseDown() {
if(hit.collider.gameObject == button)
Debug.Log("You hit the button!");
}//end OnMouseDown
}//end Reticle Class
Thanks, Jesse
Answer by jsatterw · Jun 12, 2015 at 02:40 PM
Eventually figured it out on my own. Replaced the method OnMouseDown with the method ButtonPress and call it in the Update method every time Input.GetMouseButtonDown(0) is true.
//Update is exactly the same up to line 30 here
if(Input.GetMouseButtonDown(0)) {
ButtonPress();
}//end if
}//end Update
void ButtonPress() {
Debug.Log(hit.collider.gameObject.name);
}//end if
}//end ButtonPress
In my actual code ButtonPress does more than it does here, necessitating the need for another method, but I wanted to provide the general solution in case anyone else ever needed it like I did.