Since we were using TGE for this project there were no physics in place, so I worked on implementing collision handling. I made a collision layer matrix so colliders are not tested against each other unless necessary.
When a collider overlapped another collider, the collider would get tested in the opposite direction of its velocity until it was no longer overlapping, alternating between moving it on the y- and x-axis. Once it's not overlapping anymore, the object would get forced to that position.
The collisions worked really well unless you were trying to jump against a wall. Since the map was built up of tiles, it would detect collision on the overside of the tiles on the walls. When the overlap check was done, it would move the player collider on the y-axis before the x-axis, which makes the player get stuck on the walls. The way I solved this was by casting rays upwards from the closest corner on the tile you are colliding with. If the ray hits a collider above, then it is a wall tile, and the overlap test will prioritize the x-axis. If you collide without the rays hitting anything, then it is a ground tile, and the overlap test will prioritize the y-axis.