For your slope had you rotated a rectangle or just changed the collision poly to be a slope? It sounds like that solution is based on the assumption that the slope is just a rotated version of your flat terrain.
A similar but slightly different solution is to store a "slopeAngle" variable on the instance, then use that to rotate the characters. I believe that is how the old sonic games worked. But it obviously requires you to go over each slope, figure out the angle and then store it in the instance.