Raycast not working
Hi! Im working on a scene using raycast to load a level. It worked fine in the first scene, but I cant manage to recreate it in the second scene. Everything is the same, raycast just won't work.
#pragma strict
var rayLength : int = 20;
private var inventory : Inventory;
private var guiShow : boolean = false;
private var guiShowWater : boolean = false;
private var guiShowDoor : boolean = false;
function Start()
{
inventory = GameObject.Find("First Person Controller").GetComponent(Inventory);
}
function Update()
{
var hit : RaycastHit;
var fwd = transform.TransformDirection(Vector3.forward);
if(Physics.Raycast(transform.position, fwd, hit, rayLength))
{
Debug.Log ("raycast works");
if(hit.collider.gameObject.tag == "Wood")
{
guiShow = true;
Debug.Log ("tag works");
if(Input.GetKeyDown("e"))
{
inventory.wood++;
Destroy(hit.collider.gameObject);
guiShow = false;
}
}
else
{
guiShow = false;
}
if(hit.collider.gameObject.tag == "Water")
{
guiShowWater = true;
if(Input.GetKeyDown("e"))
{
inventory.bottle++;
guiShowWater = false;
}
}
else
{
guiShowWater = false;
}
if(hit.collider.gameObject.tag == "Coconut")
{
guiShow = true;
if(Input.GetKeyDown("e"))
{
inventory.wood++;
Destroy(hit.collider.gameObject);
guiShow = false;
}
}
if(hit.collider.gameObject.tag == "BushFull")
{
guiShow = true;
if(Input.GetKeyDown("e"))
{
inventory.cookedFish++;
Destroy(hit.collider.gameObject);
guiShow = false;
}
}
if(hit.collider.gameObject.tag == "fish")
{
guiShow = true;
if(Input.GetKeyDown("e"))
{
inventory.fish++;
guiShow = false;
}
}
if(hit.collider.gameObject.tag == "loadtest")
{
guiShowDoor = true;
if(Input.GetKeyDown("e"))
{
Application.LoadLevel("objecttest");
guiShowDoor = false;
}
}
if(hit.collider.gameObject.tag == "loadisland")
{
guiShowDoor = true;
if(Input.GetKeyDown("e"))
{
Application.LoadLevel("island");
guiShowDoor = false;
}
}
else
{
guiShowDoor = false;
}
}
}
function OnGUI()
{
if(guiShow == true)
{
GUI.Box(Rect(Screen.width / 2 - 150, Screen.height / 2 - 150, 200, 20), "Press E to pick up");
}
if(guiShowWater == true)
{
GUI.Box(Rect(Screen.width /2 - 150, Screen.height /2 -150, 200, 20), "Press E to collect water");
}
if(guiShowDoor == true)
{
GUI.Box(Rect(Screen.width /2 - 150, Screen.height /2 -150, 200, 20), "Press E to enter");
}
}
As you can see I added Debug.Log twice to see if raycast was working. The first Debug.Log works (raycast), but the second one does not work (tag). Does anyone know what Im doing wrong?
Try adding:
Debug.Log(hit.transform.gameObject);
below your first Debug.Log statement. I've had problems with raycasts before where they end up hitting things that you don't expect. This will tell you exactly what it's hitting.
Your answer
![](https://koobas.hobune.stream/wayback/20220612071812im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Change color of sprite when hit by raycast [SOLVED] 2 Answers
Can not get my raycast to detect an object 0 Answers
[fixed] My physics.raycast vision doesn't work as I expect it to, and I don't know why 2 Answers
Have 3 raycast rays on a capsule and rotate them correspondingly 0 Answers
How to raycast object as far as possible, without collision? 0 Answers