1. Можно создать список для проверяемых объектов. При событии OnCollisionEnter2D добавлять в этот список объект с которым столкнулись. При событии OnCollisionExit2D удалять объект с которым было столкновение из списка. И где нибудь в Update обрабатывать этот список с объектами.
Но тут возможно может получится так, что объект может записаться в список столкновений и тут же удалится, а функция обработки запустится после всего этого. Но можно вызывать функцию обработки прям из события OnCollisionEnter2D.
void OnCollisionEnter2D(GameObject obj) {
collidersList.Add(obj);
UpdateCollidersList();
}
void OnCollisionExit2D(GameObject obj) {
if (collidersList.Contains(obj)) {
collidersList.Remove(obj);
}
}
void UpdateCollidersList() {
// обработка списка столкновений и тд.
}
}
2. Можно использовать
Physics2D.OverlapPointAll для получения массива рядом находящихся объектов.