OnTriggerStay2D() for 2 colliders simultaneously
I'm using an OnTriggerStay2D()
function that does something while an object in inside the collider (doesn't matter what). However, sometimes I have another, so a total of 2 colliders that may stay inside that collider. The two colliders are not on the same Game Object
. I'm trying like this:
void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.CompareTag("Obj1"))
{
//do something
}
if (other.gameObject.CompareTag("Obj2"))
{
//do something else
}
}
but do something else just never happens when Obj1
is already inside. How to make a collider sense two colliders at once for OnTriggerStay2D()
?
Answer by UnityCoach · Jan 23, 2017 at 11:05 PM
You can't. At least, not using OnTriggerStay2D
which is called once for every collider2D that stays in the trigger for that frame.
You may initialise a List<Collider2D>
, add the colliders in OnTriggerStay2D
, then in LateUpdate or FixedUpdate (see which ones comes after the calls), do your stuff and reset the List.
List<Collider2D> colliders;
void OnTriggerStay2D(Collider2D other)
{
if (!colliders.Contains(other))
colliders.Add (other);
}
void LateUpdate ()
{
Debug.Log (colliders.Count); // make sure the list contains the colliders in LateUpdate, I'm not sure.
// do your magic here
colliders = new List<Collider2D>();
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612105339im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Collision With Text 0 Answers
OnCollisionEnter2D not calling, but objects are colliding. 1 Answer
Collision detection 1 Answer
How to kill enemy when the bullet hits the BoxColllider2D? 1 Answer