Alternative to OnTriggerStay2D

I am coding some water and need a method to check if entities are in water or not. I am not even going try using OnTriggerStay2D if I want a playable game (which I do).
I am considering using a empty gameobject parented to entities with a collider only sensitive to water and using onTriggerEnter and onTriggerExit but there probably are better methods.

onTriggerEnter and onTriggerExit seems to be the right way to do it, but I found it’s not reliable, sometimes the one won’t be called leading to buggy behaviour, there is collider.IsTouching(otherCollider); and you could do something like: bool isInWater; isInWater=collider.IsTouching(otherCollider); putting it in update may cause performance issues, you should probably call it when player is moving vertically. You could also use OverlapCircle()