# How To Smoothly Animate From One Camera Position To Another

The Question is basically self explanatory. I have a scene with many cameras and I'd like to smoothly switch from one to another. I am not looking for a cross fade effect but more to a camera moving and rotating the view in order to reach the next camera point of view and so on. To this end I have tried the following code:

``````    firstCamera.transform.position.x = Mathf.Lerp(firstCamera.transform.position.x, nextCamer.transform.position.x,Time.deltaTime*smooth);
firstCamera.transform.position.y = Mathf.Lerp(firstCamera.transform.position.y, nextCamera.transform.position.y,Time.deltaTime*smooth);
firstCamera.transform.position.z = Mathf.Lerp(firstCamera.transform.position.z, nextCamera.transform.position.z,Time.deltaTime*smooth);

firstCamera.transform.rotation.x = Mathf.Lerp(firstCamera.transform.rotation.x, nextCamera.transform.rotation.x,Time.deltaTime*smooth);
firstCamera.transform.rotation.z = Mathf.Lerp(firstCamera.transform.rotation.z, nextCamera.transform.rotation.z,Time.deltaTime*smooth);
firstCamera.transform.rotation.y = Mathf.Lerp(firstCamera.transform.rotation.y, nextCamera.transform.rotation.y,Time.deltaTime*smooth);
``````

But the result is actually not that good.

Thank you all, I fixed it this way

`````` var pos:Vector3 = firstCamera.transform.position;
var rot:Quaternion = firstCamera.transform.rotation;
firstCamera.transform.position = Vector3.Lerp(pos, nextCamera.transform.position,Time.deltaTime*smooth);
firstCamera.transform.rotation = Quaternion.Lerp(rot, nextCamera.transform.rotation,Time.deltaTime*smooth);
``````
-
in the first line is the `ply1.transform.position.x` a mistake and meant to be `nextCamera.transform.position.x`? – Tetrad Jun 15 '12 at 20:23
also, consider using a 3rd party tweening library like iTween – Tetrad Jun 15 '12 at 20:26
You are using `Lerp()` incorrectly; please see this blog article. – BlueRaja - Danny Pflughoeft Feb 13 '15 at 1:06

You need to save the original position/rotation of `firstCamera`. It seems to be using the current values.