Need Help With Simple Java Script Regarding GUI
i just cant work out why this isnt working, im not getting any errors and when i debug it everything is working apart from it not showing up the GUI element.
so when i have the game objects i can flag them with the ray cast and it finds them i can pick them up and interact but i can only get one of them to show the gui element, if i remove the else statement they both show up when pointing at the game objects but unless i press E they wont go away. i have tried putting them in functions and calling them, tried having separate gui elements and separate var's and couldn't get it to work any different then what its doing with is current setup.
i think it has something to do with having the to if statements like they are but im really new to this and am just learning with no experience before with code, i have only gotten as far as i have via youtube and google and the API documentation, so my knowlage base is very limited
here is the code
#pragma strict
var rayLength : int = 10;
private var inventory : Inventory;
private var guiShow : boolean = true ;
var hit : RaycastHit;
function Start ()
{
inventory = GameObject.Find("First Person Controller").GetComponent(Inventory);
}
function Update ()
{
//Ray Cast From Center of Camera
var cam : Transform = Camera.main.transform; // Construct a ray from the current mouse coordinates
var ray : Ray = Camera.main.ViewportPointToRay (Vector3(0.5,0.5,0));
if(Physics.Raycast (cam.position, cam.forward, hit, rayLength))
{
//Debug.DrawLine (ray.origin, hit.point); //Show line in Editor view ( with Gizmos ON)
if(hit.collider.gameObject.tag == "Coconut") // Looks for Game Object
{
guiShow = true; //Turns on GUI PICK UP NOTICE
Debug.Log ("FOUND Coconut");
if(Input.GetKeyDown("e"))
{
inventory.Coconut++;
Destroy(hit.collider.gameObject);
guiShow = false;
Debug.Log ("Coconut");
}
}
if(hit.collider.gameObject.tag == "Wood") // Looks for Game Object
{
guiShow = true; //Turns on GUI PICK UP NOTICE
Debug.Log ("FOUND LOG");
if(Input.GetKeyDown("e"))
{
inventory.wood++;
Destroy(hit.collider.gameObject);
guiShow = false;
Debug.Log ("WOODHIT");
}
}
else
{
guiShow = false;
}
}
}
function OnGUI ()
{
if(guiShow == true)
{
GUI.Box(Rect(Screen.width / 2.5 - 300, Screen.height / 2 -300, 200, 20), "Picked UP "+ hit.collider.gameObject.tag ); // GUI PICK UP NOTICE
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612081733im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Else and If activated at the same time? 1 Answer
Else section in if statement not executing? 0 Answers
Raycast if no hit problems 1 Answer
GUI.Label if close to object 0 Answers
If statement being ignored 2 Answers