- Home /
Not sure why I'm getting a null reference exception
I have a script that uses raycasting to detect if the character is looking at a footlocker, and if they are and the E key is pressed down it open or closes that individual footlocker, and not the others in the scene. However I keep getting a null reference exception and I'm not sure why.
Any help would be greatly appreciated.
The raycasting script
using UnityEngine;
using System.Collections;
public class ActionButtonScript : MonoBehaviour
{
int i = 0;
public float playerReach = 4.0f;
void Update ()
{
CrossHairScript crossHairScript = GetComponent<CrossHairScript>();
RaycastHit target = new RaycastHit();
Vector3 fwd = transform.TransformDirection(Vector3.forward);
Debug.DrawRay(transform.position, fwd,Color.red);
if (Physics.Raycast(transform.position, fwd, out target, playerReach))
{
if(target.collider.gameObject.tag == "Openable Door")
{
crossHairScript.x = 1; //Changes color of crosshair;
GameObject currentDoor = target.collider.gameObject;
DoorOpenerScript doorOpenerScript = currentDoor.GetComponent<DoorOpenerScript>();
if(Input.GetKeyDown(KeyCode.E))
{
doorOpenerScript.toggleOpen(); // where the error occurs
}
}
else
{
crossHairScript.x = 0; //Reverts crosshair to default;
}
}
}
}
The doorOpenerScript
using UnityEngine;
using System.Collections;
public class DoorOpenerScript : MonoBehaviour
{
float smooth = 2.0f;
public float openAngle = 90.0f;
public float closeAngle = 0.0f;
public bool open = false;
public void OpenAndClose(bool opened)
{
if (opened)
{
Quaternion target = Quaternion.Euler(new Vector3(openAngle,270,180));
transform.localRotation = Quaternion.Slerp(transform.localRotation,target, Time.deltaTime * smooth);
}
else
{
Quaternion target2 = Quaternion.Euler(new Vector3(closeAngle,270,180));
transform.localRotation = Quaternion.Slerp(transform.localRotation,target2, Time.deltaTime * smooth);
}
}
// Update is called once per frame
void Update ()
{
if (Input.GetKeyDown(KeyCode.Y))
toggleOpen();
OpenAndClose(open);
}
public void toggleOpen()
{
open = !open;
}
}
EDIT: I found out the problem, DoorOpenerScript was actually attached to a child of the "Openable door"
Please don't add the solution to your question. Post an answer and accept it.
Your answer
Follow this Question
Related Questions
NullReferenceException: Object reference not set to an instance of an object. 2 Answers
Instantiate giving a NullReferenceError 1 Answer
NullReferenceException: Object reference not set to an instance of an object 2 Answers
MoveTowards doesn't work after changing tag. 2 Answers
NullPointerException while changing a variable from one script in another 1 Answer