Когда GameObject сталкивается с другим GameObject , Unity вызывает OnTriggerEnter .

Примечание.
Оба объекта GameObject должны содержать компонент Collider.
У одного должен быть включен Collider.isTrigger и он должен содержать Rigidbody.
Если для обоих игровых объектов включен Collider.isTrigger, столкновения не происходит.
То же самое применимо, когда оба GameObjects не имеют компонента Rigidbody.

OnTriggerStay - когда объекты находятся все время в столкновении.
OnTriggerExit - когда объекты перестают находится в столкновении.

Примеры реализации в программе. OnTriggerEnter - меняет цвет кубиков на желтый, при вхождении в воду.
OnTriggerStay - дает импульс кубику по направлению вверх (вектор 0,1,0) когда он находится в воде, имитируя плавание объекта на поверхности.
OnTriggerExit - меняет цвет кубиков на зеленый, при выходе из воды. 
Импульс в TriggerStay рано или поздно вытолкнет объект из столкновения => метод срабатывает.