It DOESN’T follow vertical movement. THis is a strange bug, because it used to work right a while ago (like 2.20?) then it got introduced as a bug, and never got fixed. Even 2.25 still has this annoying bug. I think you can use python to set the height of the camera based on an offset from the character.
#Attached to an always on the camera, as well as an actuator on the player
c = GameLogic.getCurrentController()
us = c.getOwner()
player = c.getActuators().getOwner()
offset = 5 #Change this to whatever height you want
campos = us.getPosition()
playpos = player.getPosition()
but I haven’t tested this, and it may just be incredibly jerky, so I dont know.