Oh crap, I just realized you may be able to use more of Michael’s setup and use the raycast impact point to place your character on the nearest mesh. However, it could be quite complicated trying to find the real orientation. You’d need to convert the world rotation to local rotation. The problem is that you may run into more of this problem where your character repeatedly changes rotation.
Perhaps there is a way to create “gravity objects” in your levels that your character will automatically orient towards? If constrain to plane does not work.
Note: Constrain to plane should be editable as a command (IE: Press K to deactivate constrain to plane)