How to animate an object so it follows the slope (normal) of another object?
I got it to work using a second mesh and the shrink wrap modifier (not the constraint).

First thing you need to do is add a single triangle mesh object.  



Then place your cone object so it is sitting on top of the triangle.



Select the cone object, then  shift  select the triangle.  Now tab into edit mode.

In edit mode select all three vertices and press ctrl+P, then choose make vertex parent.  



Back in object mode add a Shrink Wrap modifier to the triangle object.  Set the target as the ground plane and set the mode to project.  Make sure to select the right axis.  



The cone should automatically adopt the z-y coordinates of the triangle, and the z height and normal of the ground above or below the triangle.  If the triangle doesn't follow the ground properly try checking both the Positive and Negative options in the shrink wrap modifier.