В Unity для такой задачи можно обойтись без тегов и слоёв, если определить «стену» по направлению коллизии.
Идея:
В 2D физике Unity при коллизии можно проверить нормаль контакта (contact.normal).
Если нормаль направлена примерно влево или вправо (ось X), значит это стена.
Если нормаль направлена вверх — это пол, вниз — это потолок.
Мы не полагаемся на теги/слои — только на геометрию (нормаль контакта).
Наклонные поверхности корректно попадают в «пол», пока их угол ≤ floorMaxAngle.
Стены — всё, что «достаточно вертикально» (между wallMinFromUp и 180 - wallMinFromUp).
Знак normal.x даёт сторону стены (левая/правая), что удобно для прыжков от стены и т.п.
Если стоим на краю (есть контакт и с полом, и со стеной), можно задать приоритет пола, чтобы не ломать приземление.
Практические советы
Для «липких» углов/дребезга увеличь Bounce Threshold у Rigidbody2D или добавь Contact Offset поменьше на коллайдерах.
Tilemap/CompositeCollider2D могут давать много контактов — цикл по collision.contacts как раз это учитывает.
Если персонаж «пролетает» тонкие стены, включи Continuous у Rigidbody2D или увеличь толщину коллайдера.