- Home /
Object Reference not set to instance of an object - error in 2d rope code
Hey commUnity. Im using C#. I am getting the error: "NullReferenceException: Object reference not set to an instance of an object" error while coding a 2d rope mechanic. As a result (at least, I assume its as a result) my code isnt working and the character wont child to the rope and thus be able to climb it. The error is at:
CharacterControlsManager.OnExitRope (UnityEngine.GameObject rope) (at Assets/Standard Assets/Character Controllers/Sources/Scripts/CharacterControlsManager.cs:65) UnityEngine.GameObject:SendMessage(String, Object, SendMessageOptions) RopeSegmentBehavior:OnTriggerExit(Collider) (at Assets/Standard Assets/Character Controllers/Sources/Scripts/RopeSegmentBehavior.cs:31)
The code works like this. I have one class, RopeSegmentBehaviour, attached to every rope segment. The collider is a trigger. In that class is the code:
public void OnTriggerEnter (Collider collision){
if (collision == null)
Debug.LogError("collider enter being read is null");
if (collision.tag == "Player")
{
collision.gameObject.transform.parent.gameObject.SendMessage("OnEnterRope", gameObject, SendMessageOptions.DontRequireReceiver);
Debug.Log("enterMessageSent!");
}
public void OnTriggerExit(Collider collision)
{
if (collision == null)
Debug.LogError("collider exit being read is null");
if (collision.tag == "Player")
{
collision.gameObject.transform.parent.gameObject.SendMessage("OnExitRope", gameObject, SendMessageOptions.DontRequireReceiver);
Debug.Log("exitMessageSent!");
}
[
On the character, I have a component that manages climbing script, called the ClimbingController. I also have a Character Controls Manager class as a component. its set up like this:
[System.NonSerialized]
GroundController walkingScript;
[System.NonSerialized]
ClimbingController climbingScript;
void Start () {
walkingScript = gameObject.GetComponent<GroundController>();
climbingScript = gameObject.GetComponent<ClimbingController>();
}//end Start
The lines that throw the error are in the CharacterControlsManager class. There is the conditional part of the below if:
void OnEnterRope( GameObject rope){ if ((Input.GetAxisRaw("Vertical") != 1 && climbingScript.enabled == false) || climbingScript.segmentHashtable.ContainsValue(rope)) { Debug.Log("input.getAxisRaw Vertical did not equal one while the climbingScript was enabled OR we werent on the rope already"); return; }
And the other error is in this if condition:
void OnExitRope(GameObject rope){
if (climbingScript.enabled == false)
return;
Any help would be awesome.
Your answer
Follow this Question
Related Questions
Got a Error about reffering a object i can not fix 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Referencing variables from another script 2 Answers
Question about Physics2D.Linecast 1 Answer