OnTriggerEnter2D (так же, как и 3D) проверяет касания лишь того объекта, на котором висит скрипт, в котором он реализован. Если объект, на котором висит скрипт, имеет "детей" - на них не распространяется проверка касаний к триггерам. А зависает намертво потому, что как уже выше отписали, у тебя бесконечный цикл идёт, и советую почитать материалы о цикле while, когда его стоит использовать и как он работает