to do this, you will need to write a follow script, which sets the camera at a fixed distance based on the balls velocity.
say your ball moves at 1,0.5, 1. First, remove the y, so you get 1,0,1, now reverse it to get -1, 0, -1. Normalize to make it a unit of 1. Now, take the normalized vector times the follow distance. Add a raw y of 1, so you get like -7.7, 1, -7.7 (if following at 10 units) add the balls position. This now gives you the position of the camera. (or where you want the camera to be) Now, simply lerp that position over time (camera.position = Math.Lerp(camera.position, newPosition, 5 * Time.deltaTime). This will move the camera over time so it doesn’t seem so jerky.
OK, now for the last good bit. During this calculation, you will need to figure out the orientation of the motion. For simplicity’s sake, try something like this:
var cameraTarget = (rigidbody.velocity * new Vector3(-1, 0, -1)) .normalized * 10 + transform.position;
var currentPosition = camera.position;
var position = camera.position;
position.y = transform.y;
camera.position = Vector3.Lerp(position, cameraTarget, 5, * Time.deltaTime);
camera.LookAt(transform.position);
// now, get the input
var input = new Vector3(-Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
var force = camera.TransformDirection(input) * 100;
rigidbody.AddForce(force);
// now, with the force applied, move the camera up.
camera.position = camera.position + Vector3.up;
camera.LookAt(transform);
Of course its loose, and It kind of follows what I remember of moving stuff around, but its a start. 