привет в этот скрипт мне нужно добавить модификатор для перемещения камеры, что бы при максимальном приближении скорость передвижения уменьшалась 
using Cinemachine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraSystem : MonoBehaviour
{
    [SerializeField]
    private CinemachineVirtualCamera cinemachineVirtualCamera;

    [Space(20)]
    [SerializeField]
    private float maxRotationCamera;
    [SerializeField]
    private float minRotationCamera;

    [Space(20)]
    [SerializeField]
    private float maxZoomCamera;
    [SerializeField]
    private float minZoomCamera;

    [Space(20)]
    [SerializeField]
    private float movementSpeed;
    [SerializeField]
    private float rotationSpeed;
    [SerializeField]
    private float zoomSpeed;

    private CinemachineTransposer cinemachineTransposer;
    private Vector3 followOffset;
    private float currentFieldOfView;
    

    private void Awake()
    {
        cinemachineTransposer = cinemachineVirtualCamera.GetCinemachineComponent<CinemachineTransposer>();
        followOffset = cinemachineTransposer.m_FollowOffset;
        currentFieldOfView = cinemachineVirtualCamera.m_Lens.FieldOfView;
    }

    private void Update()
    {
        if (MapManager.Instance.IsViewingMap)
        {
            InputValidation();
        }
    }

    private void InputValidation()
    {
        if (Input.GetMouseButton(0))
        {
            HandleCameraMovement();
        }
        if (Input.GetMouseButton(1))
        {
            HandleCameraRotation();
        }
        HandleCameraZome();
    }

    private void HandleCameraMovement()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        var moveDir = -mouseX * transform.right + transform.forward * -mouseY;

        transform.position += moveDir * movementSpeed * Time.deltaTime;
    }

    private void HandleCameraRotation()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        transform.eulerAngles += new Vector3(0, mouseX * rotationSpeed * Time.deltaTime, 0);


        if (mouseY < 0)
        {
            var newRotationZ = cinemachineTransposer.m_FollowOffset.z + -mouseY * rotationSpeed * 0.5f * Time.deltaTime;
            followOffset.z = Mathf.Clamp(newRotationZ, minRotationCamera, maxRotationCamera);
            cinemachineTransposer.m_FollowOffset = followOffset;
        }

        if (mouseY > 0)
        {
            var newRotationZ = cinemachineTransposer.m_FollowOffset.z + -mouseY * rotationSpeed * 0.5f * Time.deltaTime;
            followOffset.z = Mathf.Clamp(newRotationZ, minRotationCamera, maxRotationCamera);
            cinemachineTransposer.m_FollowOffset = followOffset;
        }
    }

    private void HandleCameraZome()
    {
        if (Input.mouseScrollDelta.y > 0)
        {
            currentFieldOfView -= 5;
        }

        if (Input.mouseScrollDelta.y < 0)
        {
            currentFieldOfView += 5;
        }

        currentFieldOfView = Mathf.Clamp(currentFieldOfView, minZoomCamera, maxZoomCamera);

        cinemachineVirtualCamera.m_Lens.FieldOfView = Mathf.Lerp(cinemachineVirtualCamera.m_Lens.FieldOfView, currentFieldOfView, Time.deltaTime * zoomSpeed);
    }
}