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
