Script won't reactivate after I deactivate it through a script

Hey all. I’ve got this script that is supposed to deactivate motion of the stock First Person Controller, and set a bool variable in a different script to true. Here it is:

using UnityEngine;
using System.Collections;

public class LadderAcend : MonoBehaviour 
{
	public GameObject player;
	private Climb climb;

	void Awake () 
	{
		player = GameObject.FindGameObjectWithTag("Player");
		climb = player.GetComponent<Climb>();
	}

	void OnTriggerEnter (Collider other) 
	{
		if(other.tag == "Player")
		{
			player.GetComponent<FPSInputController>().enabled = false;
			player.GetComponent<CharacterMotor>().enabled = false;
			climb.canControl = true;
		}
	}

	void OnTriggerExit (Collider other) 
	{
		if(other.tag =="Player") 
		{
			player.GetComponent<FPSInputController>().enabled = true;
			player.GetComponent<CharacterMotor>().enabled = true;
			climb.canControl = false;
		}
	}
}

I have a custom movement script that is activated by the canControl variable being set to true.

When I enter the trigger, the Character Motor and FPSInputController are disabled, and canControl is true, but when I exit the collider, the scripts are not re-enabled, neither is canControl set to false. Any ideas?

After a script is deactivated through .enabled it cannot be found by a GetComponent. You need to put that reference in a variable.

GetComponent is process heavy, you should always call it at the start of the game and keep reference of what you need to interact with in variables.