Camera Zoom - FoV/Mouse Sensitivity Issues

I’ve implemented a zoomable camera using the scroll wheel to directly affect the field of view of the camera in question. Zoom works fine, but now moving the mouse around results in a huge change, because it’s very sensitive. Is there a way to get around this? Perhaps an alternate zoom method or a way to counterbalance the sensitivity brought on by the change in FOV?

You can do absolutely anything you want in code! :slight_smile:

The problem sounds like the camera moves too fast, and you’ve actually suggested a perfectly good solution; slow the panning of the camera while it’s zoomed in. This is pretty much what you’d do with a camera in real-life, so let’s go down that rabbit hole.

What you need to do is slow your camera panning by a factor of your zoom level. I don’t know how you’re figuring your zoom level, but I assume that, since you’re using the mouse wheel, there is a value that you set. If not, then create a float value to store the ‘zoom level’. A value of 1 should have the camera at the maximum zoom level and 0 at the minimum zoom level. Do something like the following (psudocode):

float zoomLevel = 0.5f;

// scroll mouse wheel up

  • increment the zoomLevel
  • set the camera zoom level by using Lerp(minFOV, maxFOV, zoomLevel).

// pan camera

  • determine panning speed in the same way by using Lerp(maxPanSpeed, minPanSpeed, zoomLevel).