Read boolean from parent's script

I shouldn’t be asking this, because accessing public variables from parent script should not be THIS difficult. I could not find a single crystal clear answer on what I’m suppose to do.

For my case, when the player touches a specific surface, a boolean in the parent script named “flip” is set to true (I’ve done this part already). The camera of the player is suppose to check if “flip” is set to true, and set rotation to 180 degrees on the z-axis if so.

The easiest way to do this is by adding a public variable (of the same type as the script in your parent) to the script on the camera. Something like this:

public PlayerController playerController;

void Update () 
{
        if (playerController.flip)
            transform.localEulerAngles = new Vector3(0, 0, 180);
        else
            transform.localEulerAngles = new Vector3(0, 0, 0);
}

Where PlayerController should be the name of the script that has the public flip variable. Then simply in the editor drag it in.

If you do not want to drag it in, use GetComponentInParent() in the start method to get a reference to it on game startup.

Assuming your parent script looks something like this :

public ParentScript : Monobehaviour {
public bool flip;
//...
}

Then in child script :

private ParentScript parentScript; // Or make it public and assign it in Inspector

    private void Start()
{
    parentScript = FindObjectOfType(typeof(ParentScript)) as ParentScript; //If assigned in inspector delete this
    //or
    parentScript = transform.parent.GetComponent<ParentScript>(); //If assigned in inspector delete this
}

    private void Update()
    {
        if (parentScript.Flip)
        {
            //DoSomething
        }
        else
        {
            //DoSomeething else
        }
    }

Or it could be done with static bool as well.
There could be more efficient way if you would provide some code.