Функция OnCollisionEnter может не выполняться по нескольким причинам:
1. Проблема связана с префабом или объектом с коллайдером: Убедитесь, что объект, на который назначен скрипт, имеет коллайдер. Кроме того, если используется префаб, убедитесь, что он находится на сцене и активен.
2. Неправильное имя метода или отсутствие MonoBehaviour наследования: Убедитесь, что название метода написано точно как OnCollisionEnter и что ваш класс наследует MonoBehaviour.
3. Игровой объект без физического материала или его настройки: Убедитесь, что ваш объект имеет прописанным физический материал или настройки физики, которые позволяют взаимодействия с другими объектами.
Что касается вопроса о приватности метода, вы можете сделать это публичным, чтобы другие скрипты или объекты имели доступ к нему. Просто удалите модификатор "private" перед методом OnCollisionEnter.
Если метод все равно не вызывается, убедитесь, что у вас есть другие объекты с коллайдерами для выполнения столкновения.
Чтобы избавиться от предупреждения о неиспользуемом методе, убедитесь, что в вашем скрипте нет других ошибок и что ваш объект с коллайдером активен на сцене. Если метод не используется другими скриптами, вы можете просто удалить его, чтобы избежать предупреждения.