- Home /
Smooth camera not really smooth
hello, i have this camera following my car in my project, it should be smooth, tho when you see it turning it seems like the camera is lagging..
i have a example here:
http://lysdal.org/s-dev/unity3d/test.html
the controls are:
a - forward
s - backward
a / d - turning
space - brake
Thanks in advance,
Soren
@AquaGeneral sure, its in the standard assets, here:
/* This camera smoothes out rotation around the y-axis and height. Horizontal Distance to the target is always fixed.
There are many different ways to smooth the rotation but doing it this way gives you a lot of control over how the camera behaves.
For every of those smoothed values we calculate the wanted value and the current value. Then we smooth it using the Lerp function. Then we apply the smoothed values to the transform's position. */
// The target we are following var target : Transform; // The distance in the x-z plane to the target var distance = 10.0; // the height we want the camera to be above the target var height = 5.0; // How much we var heightDamping = 2.0; var rotationDamping = 3.0;
// Place the script in the Camera-Control group in the component menu @script AddComponentMenu("Camera-Control/Smooth Follow")
function Update () { // Early out if we don't have a target if (!target) return;
// Calculate the current rotation angles
wantedRotationAngle = target.eulerAngles.y;
wantedHeight = target.position.y + height;
currentRotationAngle = transform.eulerAngles.y;
currentHeight = transform.position.y;
// Damp the rotation around the y-axis
currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
// Damp the height
currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
// Convert the angle into a rotation
currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
// Set the position of the camera on the x-z plane to:
// distance meters behind the target
transform.position = target.position;
transform.position -= currentRotation * Vector3.forward * distance;
// Set the height of the camera
transform.position.y = currentHeight;
// Always look at the target
transform.LookAt (target);
}
Edit: i tried changing the size, it didnt work :/
Answer by AquaGeneral · Feb 06, 2010 at 08:13 AM
I can see what you mean however I can't quite figure out the problem without looking at the camera script. Could you post it?
Edit: Ah, I didn't realize you meant the standard assets smooth camera script.
I recall having a few problems with this in the past. I am not sure entirely what I did to fix it up. But I do recall lowering the scale of the scene, which is probably when the problem went away.
A quick way of finding out if that's the problem or not is just lowering the scale of the car, and see if that helps.
Edit 2: Is the target of the camera a rigidbody by any chance? Here are some things to try if that's the case:
- Raise the Solver Iteration Count in the Physics Manager.
- Lower the Time Scale in the Time Manager. It might be a temporary fix.
- Lower the Fixed Timestep in the Time Manager. Another potential yet temporary fix.
i tried all three, only the fixed timestep change worked.. so now it works, thanks :D
Answer by mightytron · Mar 01, 2010 at 08:39 AM
Hi, I had a similar problem. Tried Damping, Lerping aso and it always lagged. Finally it worked after I put all my camera lerping and damping code into the fixedupdate...
Thankyou very much, you just told me exactly what I needed to know :)
Thank you... thank you... thank you... thank you...
Answer by Moki · Oct 26, 2010 at 04:35 AM
I changed the 'LateUpdate' function in the SmoothCamera script to 'FixedUpdate', that seems to solve the lag.
Answer by unity3Ddev · Sep 18, 2012 at 04:02 PM
Guys the hole purpose of this script is create a lag effect. If you don't want the lag then increase the damping values to match your requirement.
var heightDamping = 2.0; var rotationDamping = 3.0;
Note :- Going for FixedUpdate is like finding solution but not the problem. FixUpdate affect Time.deltaTime property that's why it is not damping inside.
Answer by ProgramYourFace · May 30, 2015 at 11:30 AM
Thanks this FixedTimeStep fixed it for me to. Now I have smooth fallowing arms.:)
Your answer
