Glad you've sorted something out for this. I find these sort of problems insanely frustrating.
Quote: "How do you tailor it to only detect the y part of the collision when colliding with a zombie and not the level?"
What I meant is do the sphere cast a normal but only change the x and z position for the sliding and keep the y position the same when colliding with zombies.
Using The Comet's code as an example, the collision detection would change to this:
if SC_SphereCast(Player.oldpos.x#,Player.oldpos.y#,Player.oldpos.z#,Player.pos.x#,Player.pos.y#,Player.pos.z#,10,0)
Player.pos.x# = SC_GetCollisionSlideX()
Player.pos.z# = SC_GetCollisionSlideZ()
Player.gravity# = 0
endif
You may or may not want to change the gravity when hitting zombies.
The other thing you could try is do the collision with the zombies first and then do the collision with the map. This could have the effect of pushing the player closer to a zombie rather than through the map, wouldn't look as bad. I say "This could have the effect... " as I don't know how you're doing the collision so I couldn't say for sure and I'm also making the assumption that it's going to be easy to seperate out the collision with the zombies from the collision with the map.