- Home /
Disabling Raycast with GUI
Hello. I've been looking around for answers about disabling raycast when using a GUI, and I've tried all of the solutions I've seen so far. Yet I am still selecting an object behind my GUI. Right now I have it set up that when the object I want is selected, the layermask is changed to ignore raycast. I also see this change in the inspector when testing the game. The window and the buttons show up, but when I select them nothing happens and the debug log shows the name of the game object behind the GUI. Any ideas on how to fix this?
var player : GameObject;
var mainCamera : GameObject;
var layer : LayerMask = 1;
var range : int = 1;
var hit : RaycastHit;
var Doctor : GameObject;
private var doctorHit : boolean = false;
private var showWindow : boolean = true;
function OnGUI() {
if (doctorHit == true) { // If the doctor is selected
Screen.lockCursor = false;
player.GetComponent(MouseLook).enabled = false;
mainCamera.GetComponent(MouseLook).enabled = false;
Time.timeScale = 0.0;
layer = 4; //Set layer to ignore raycast
GUI.Window(0,Rect(Screen.width / 2 - 100, 100 , 200, 400), OptionsWindow, "Options"); // Call options window
}
}
function OptionsWindow (windowID : int) {
if (GUI.Button (Rect (25, 25, 150, 50), "Check Pulse")) {
print ("Check pulse");
player.GetComponent(MouseLook).enabled = true;
mainCamera.GetComponent(MouseLook).enabled = true;
Screen.lockCursor = true;
Time.timeScale = 1.0;
doctorHit = false;
layer = 1;
}
if (GUI.Button (Rect (25, 100, 150, 50), "Call Anesthesia")) {
print ("Call Anesthesia");
doctorHit = false;
Screen.lockCursor = true;
player.GetComponent(MouseLook).enabled = true;
mainCamera.GetComponent(MouseLook).enabled = true;
Time.timeScale = 1.0;
layer = 1;
}
if (GUI.Button (Rect (25, 175, 150, 50), "Call Time of Death")) {
print ("Call Time of Death");
doctorHit = false;
Screen.lockCursor = true;
player.GetComponent(MouseLook).enabled = true;
mainCamera.GetComponent(MouseLook).enabled = true;
Time.timeScale = 1.0;
layer = 1;
}
Debug.Log("id: " + GUIUtility.hotControl); //This is showing me that the buttons are getting clicked, but they aren't doing anything
}
function Update() {
if (Input.GetMouseButtonDown(0)) {
if (HitDoctor()) {
doctorHit = true;
}
}
}
function HitDoctor() : boolean { // Does a raycast to check if the doctor has been selected
if (Physics.Raycast(transform.position, transform.forward, hit, range, layer) == true) {
Debug.Log(hit.collider.gameObject.name);
if (hit.collider.gameObject == Doctor)
return true;
else
return false;
}else
return false;
}
Thanks,
dylan92
Your answer
Follow this Question
Related Questions
Vertical distance indication 1 Answer
Get GUITexture to follow ScreenPointToRay ray cast 1 Answer
Making raycasts go to the centre of the screen 1 Answer
I am getting an error and cant figure out why, Help please? 1 Answer
How to disable a part of a script to avoid replayed camera animations ? 0 Answers