Vector3 camForward = camera.transform.forward;
camForward.y=0;
camera.transform.position += camForward.normalized *Input.GetAxis("Vertical")*speed;
Во вот так работает, как надо.
30000 обновляемых объектов, из которых на экране отображается только 3000, в зоне камеры на расстоянии 200 метров.