Another way, which doesn’t use constraints is to key the floor positions first, i.e. Left-foot, Right-foot, Left-foot, Right-foot, in a side view to the walk, then you can go back through your walk and key in the parts where the foot needs to come off of the ground or rotate. Usually you can just key lifts and rotations for the first two steps and then use the action editor to copy the raises, rotations, etc to the other steps. Break through is something that I think we deal with no matter the software we use, that’s why you have to be a little careful and plan out the actions.
Just to explain further, even though it may not be necessary, say you key both feet at the standing position, they are on the ground, the character is facing the front. I would then switch to side view[Numpad 3] and also switch to the next flat foot position frame, probably about 12 frames from the previous flat foot key. Then I’d grab the foot bone, and move it along the y-axis only to it’s new flat foot position. [G, Y, then move]. Then I would also key the right foot where it is supposed to say at this same time. I’d then go 12 more frames and move the right foot [G, Y, then move] to it’s next flat footed position and repeat for each step. You could just as easily do the body first, then the feet, it doesn’t matter, it all depends on the parenting of your rig. I tend to use IK for the legs and parent the feet to a master bone and torso to a separate cog bone so that the feet can move independent of the body.
So, now I have a guy sliding his feet as he walks, but never do his feet go through the floor. If he was on steps, I’d use the same process, using wireframe view [Z], I’d check where the floor was, and the bottom of his feet, and key them right next to each other. Then, after I know where the feet are going to be flat, I can key in the heel lift and foot rotation and lift as he comes through the step. Depending on the foot and rig you are using, you may be able to merely copy the rotations, etc. to the next steps, or you might want to just key each step separately to give it a more organic feel.
The floor constraint could make it easier though if you are doing an odd walk, or if you want to animate differently and not worry about switching to a side view to ensure you don’t break through, the problem I usually have with it though is needing to ensure the bones and mesh are at the proper height so you get a good match with the floor, I’m sure that taking that extra time up front would be sure helpful since it is a little odd to animate from flat foot to flat foot rather than contact to contact or another way.
Here is a decent link from Nathan Dunlap about animating a walk in blender using Ludwig
You’ll notice he doesn’t use the floor constraint, but it may not have been available at that time. I guess the important thing is to check what you are doing, good animation is hard.
With the handshake, you don’t have that crutch in the floor constraint, so you really have to watch how you are animating. A little pass through will not be noticable, and will probably help with the illusion of contact between the characters. Animation is a time consuming art. Look at the number of man-hours on any film, whether it be short or feature, it takes a long time to get even a mediocre result.