Hey guys, so I have a raycast script attached to my FPS controller, with the raycast coming out of my main camera/fps camera.
What the script is meant to do is when the player approaches the tagged door within the range, then lets you have the option to press space to go to the next area. This all works fine. However when I go toward the door, looking at a weird angle (but still with the ray on the door) it doesn’t detect it, or it still thinks it is being detected even when the player is outside the range. Here’s the script if anyone could help ![]()
var Hit: RaycastHit;
var Range : float;
var mesh :GameObject;
var DoorActive: boolean = false;
private var count: int = 0;
var myStyle1 : GUIStyle;
var Level : String;
function OnGUI () {
if(DoorActive == true){
GUI.color = new Color( 1,1,1, 0.5f);
GUI.Label (Rect (Screen.width/2-50, Screen.height/2-25, 100, 50), "Space to Enter", myStyle1);
}else{
GUI.Label (Rect (Screen.width/2-50, Screen.height/2-25, 100, 50), "o", myStyle1);
}
}
function Update(){
if(DoorActive == true){
if(Input.GetKey(KeyCode.Space)){
count = count + 1;
Debug.Log("Door presses" + count);
Application.LoadLevel (Level);
DoorActive = false;
//what happens when press
}
}
var DirectionOfLine : Vector3 = mesh.transform.TransformDirection(Vector3.forward);
Debug.DrawRay(mesh.transform.position, DirectionOfLine * Range, Color.yellow);
if(Physics.Raycast(mesh.transform.position, DirectionOfLine, Hit, Range)){
if(Hit.collider.gameObject.tag == "Door"){
// Debug.Log("You have hit the door, press space to open");
DoorActive = true;
}
}else{
DoorActive = false;
}
}