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