Moving Texture on Mesh

I have a character onscreen and I would like to have a flat cone shaped texture on the ground in front of him. It is an aiming guide that will show where the player can shoot.

The aiming-cone should deform based on the ground mesh. Ex. if the character is facing a hill, the cone would bend upwards with the hill.

My current solution is to have a 3d model that represents the cone. This won’t work on non-flat surfaces however. What is a good solution for this problem?

you could try with some projection mapping:

http://unity3d.com/support/documentation/ScriptReference/Projector.html