Ну что же, проблему решили самостоятельно. Лестница у нас представляет собой сложный объект из самой платформы, лестницы, и невидимого тригера. Лестница и тригер принадлежат двум разным слоям Ladder и Crutch (так мы их решили назвать), а платформа имеет тот же слой что и земля.
Мы используем Physics.IgnoreCollision(true) когда пользователь цепляет направленным вниз raycast слой Crutch (наш тригер), когда же луч не обнаруживает этот слой, или когда юзер нажимает клавишу вверх, то Physics.IgnoreCollision становится снова false. Для того, чтобы во время спуска Physics.IgnoreCollision не переключался на false раньше времени, и платформа своим коллайдером не толкала пользователя, размер коллайдера тригера равен половине высоты лестницы, и его верхняя точка ненамного превышает расположение самой платформы. Для того чтобы юзер поднимался вверх через платформу мы используем PlatformEffector, если вдруг кто не обратил внимание.