How to change Booleans from other scripts?

I’m creating doors similar to those in portal but resetting objects instead, the problem is i can’t change Booleans from other scripts, I’ve tried everything I can think of but nothing seems to work, Any help is appreciated.
Here’s my scripts:

public float distanceToSee;
public bool keyCardElevator = false;
public bool keyCardEDoor = false;
bool warehouseConsole = false;
bool roomConsole = false;
bool hallwayConsole = false;
RaycastHit whatIHit;
GameObject theKey;

// Use this for initialization
void Start () {
    keyCardElevator = false;
    theKey = GameObject.Find("Key_Card");
}

// Update is called once per frame
void Update ()
{
    Debug.DrawRay(this.transform.position, this.transform.forward * distanceToSee, Color.magenta);

    
    if(Physics.Raycast(this.transform.position, this.transform.forward, out whatIHit, distanceToSee))
    {
        if (whatIHit.collider.gameObject.tag == "HoloDoor")
        {
            keyCardElevator = false;
            keyCardEDoor = true;
        }
        if(Input.GetKeyDown (KeyCode.E))
        {
            if (keyCardEDoor == true)
            {
                theKey.transform.Translate(-20, -40, Time.deltaTime);
                theKey.transform.Translate(-50, Time.deltaTime, -20, Space.World);
            }
           
            if (whatIHit.collider.gameObject.tag == "KeyCards")
            {
                Debug.Log("I picked up a " + whatIHit.collider.gameObject.name);
                if (whatIHit.collider.gameObject.GetComponent<KeyCards>().whatKeyAmI == KeyCards.Keycards.correctKeyLower)
                {
                    keyCardElevator = true;
                    keyCardEDoor = false;
                    if(keyCardElevator == true)
                    {
                        theKey.transform.Translate(20, 40, Time.deltaTime);
                        theKey.transform.Translate(50, Time.deltaTime, 20, Space.World);
                    }
                }

            }
        }  

And the script for the door:
public class HoloDoor : MonoBehaviour

{

GameObject thePlayer;  

PlayerRaycasting playerScript;

void Start()
{
    thePlayer = GameObject.Find("FPSController");
    playerScript = thePlayer.GetComponent<PlayerRaycasting>();

    
    playerScript.keyCardEDoor = false;
}
void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "Player")
    {
        if (playerScript.keyCardElevator == true)
        {
            playerScript.keyCardElevator = false;
            playerScript.keyCardEDoor = true;
            Debug.Log("Die!!!!");
        }
    }
}

}

Try using the ‘static’ keyword.

public class ParentScript : MonoBehaviour {

    public static bool changedBool;
	// Use this for initialization
	void Start () {
        changedBool = true;
	}
}

public class FriendScript : MonoBehaviour {

	// Update is called once per frame
	void Update () {
        if (ParentScript.changedBool == true)
        {
            ParentScript.changedBool = false;
            Debug.Log(ParentScript.changedBool);
        }
	}
}

If you run these two scripts, you will notice the console prints out false, which as you can see by the ParentScript, that it was initially set to true but changed to false by the FriendScript. A plus about using the static keyword is that it usually saves a bit a typing since you do not need any ‘GetComponents’ or Instances!