Может это все из-за Translate. Никогда ей не пользовался
Попробуй так:
Vector3 camForward = camera.transform.forward;
camForward.y=0;
camera.transform.position += camForward.normalized *Input.GetAxis("Vertical")*speed;
да
function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void
по умолчанию Translate в локальных координатах.