c# – Unity3d OnTriggerEnter, animation

First of all OnTriggerEnter takes a parameter of type Collider .. otherwise it is never called by Unity.

Then either set a bool flag to true and reset it to false in OnTriggerExit – you could e.g. use the text.enabled which you are setting anyway

public Text text;
public Animator anim;

private void Start()
{
    text.enabled = false;
    anim = GetComponent<Animator>();
}

private void Update()
{
    if (text.enabled && Input.GetKeyDown(KeyCode.E))
    {
        anim.Play("DoorOpen");
    } 
}

private void OnTriggerExit (Collider other)
{
    text.enabled = false;
}

private void OnTriggerEnter(Collider other)
{
    text.enabled = true;
}

or instead of poll checking it in Update you can rather directly use OnTriggerStay which is repeatedly called as long as you are hitting the trigger

public Text text;
public Animator anim;

private void Start()
{
    text.enabled = false;
    anim = GetComponent<Animator>();
}

private void OnTriggerStay(Collider other)
{
    if (Input.GetKeyDown(KeyCode.E))
    {
        anim.Play("DoorOpen");
    } 
}

private void OnTriggerExit (Collider other)
{
    text.enabled = false;
}

private void OnTriggerEnter(Collider other)
{
    text.enabled = true;
}

Read more here: Source link