He programado las colisiones verticales y horizontales, todo funciona bien, excepto en los bordes de un bloque sólido.
cuando el personaje brinca y colisiona con cualquiera de las esquinas inferiores, automáticamente el personaje se transporta a la posición y = 0
¿Tienes el código a mano?
Para así ver en qué puede estar la falla, quizás te equivocaste en un signo.