Auch wenn ich mir den CharacterController noch nicht angesehen habe, würde ich grundsätzlich erstmal empfehlen, den Weg zu gehen, den Renegade vorgeschlagen hat.
Ansonsten noch der Hinweis: vielleicht könnte es sinnvoll sein, wann der Punkt deiner Einheiten, anhand derer diese Positioniert werden, nicht deren Mittelpunkt ist, sondern unterhalb ihrer Füße liegt. Erreichen kann man das, indem man das Modell einfach um die Hälfte seiner Höhe nach oben verschiebt und das gesamte GameObject dann wieder auf den Boden setzt.
Wenn der CharacterController (warum auch immer) nicht verwendet werden kann, aber Physik in Frage kommt, kann man, statt die Position selbst anzupassen, die Geschwindnigkeit der Einheit anpassen.
Wenn auch Physik nicht in Frage kommen sollte, könnte man mit Hilfe eines Raycasts die Höhenkoordinate herausfinden, nur wird das ziemlich kompliziert, wenn die Einheit sich auch mal unter begehbarem Tarrain bewegt. Wenn man von einer zu hohen Position aus einen Raycast nach unten macht, könnte es die über der Einheit liegenden Platform treffen, wenn es von einem zu tiefen Punkt aus gemacht wird, startet der Raycast evtl. bereits im Boden (Abhängig von der Einheitenposition und der Umgebung).