Regions for every cliff? Have fun ;-)
You can easily get the terrain height and the cliff height with triggers.
-
Set P = (Position of unit)
-
Custom script: set udg_Terrain_Height = GetLocationZ(udg_P)
-
Set Cliff_Height = (Terrain cliff level at P)
-
Custom script: call RemoveLocation(udg_P)
Now do the same thing with some points around the unit, or maybe better: save the previous cliff/terrain height in a hashtable with the unit's key.
Then you know whether it is moving upwards/downwards and can adjust the camera accordingly.
PS: Using the terrain height should be sufficient for this, as higher cliffs also have a higher terrain Z.