I am having a similar problem, where the main character can pass through some solid (polygon) objects where they intersect.

I seem to have solved it thanks to jumpman's comments on this thread, by making sure the z movement of the character is handled by the same c_move event, instead of in a separate, manual (my.z = n) type setup.

Now he does not pass through objects, but he tends to slide down slopes and has trouble climbing up steeper slopes.

Not sure if this will help you, but I thought I would pass on what I found out (thanks again to Jumpman).