Making a Smooth camera zoom with transform.Translate
I'm trying to use Lerp in Translate but i can't figure out a practical solution that may be too complex, here's what i'm doing:
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
Camera.main.transform.Translate(_camZoomSpeed * Vector3.forward * Time.deltaTime);
}
else if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
Camera.main.transform.Translate(_camZoomSpeed * Vector3.back * Time.deltaTime);
}
Nothing out of the ordinary.
However i want this process to be smooth and i can't figure out an easy way to do this that uses local translation like transform.translate does. This does the movement i want, yet it does not feel smooth since i would need Lerp for that.
Is there any way to do this in a kind of simple way without messing the code too much? I think i'm missing something and i don't know what.
Answer by AdamBebko · Apr 13, 2016 at 07:36 AM
Try this:
Camera.main.transform.position = Vector3.Lerp(startPos, endPos, Time.deltaTime * zoomSpeed);
just change position to localposition if you want. for end pos, just pick a point along the Vector3.back or forward. Play around with how far back or forward until you get it feeling right.
Hope that helps!