I am using a sphere collider, set to isTrigger=false, to create a hashtable of all the enemies in range of my player. My code looks like this:
void OnTriggerEnter(Collider c) {
if(c.isTrigger)
return;
if(c.gameObject.tag == "Unit")
{
_knownEnemies[c.transform.GetInstanceID()] = c.gameObject;
}
}
void OnTriggerExit(Collider c) {
if(c.isTrigger)
return;
if(c.gameObject.tag == "Unit")
{
_knownEnemies.Remove(c.transform.GetInstanceID());
}
}
The line:
if(c.isTrigger)
return;
Is necessary as currently the sphere collider is triggering the OnTriggerEnter event when it collides with other sphere colliders (also set to isTrigger = true) which is undesirable.
1) Is there a neater way of making it so the trigger events are only called when a collider enters a trigger, not when a trigger enters a trigger?
- Would it be faster to just use Physics.SphereCast every update instead? This gets around using triggers.