камера для 2d rts игры

Всем привет, подскажите пожалуйста, я создаю камеру для 2D стратегии и столкнулся с проблемой, что при обозначении рамок карты (на которые камера не может зайти) не работает мой скрипт задающий эти рамки, а именно , камеру бросает из стороны в сторону. Буду очень признателен за вашу помощь.

Vector3 mouseScrollStartPos;
 Camera myCamera;
 [SerializeField]int BorderSize = 10;
 [SerializeField] float ScrollSpeed = 30f;
 [SerializeField] float ZoomSpeed = 100f;
 [SerializeField] float leftLimit;
 [SerializeField] float rightLimit;
 [SerializeField] float topLimit;
 [SerializeField] float buttomLimit;
 void Start()
 {
     myCamera = GetComponent<Camera>();
     
 }
   
 private void Update()
 {
     
     HandleMiddleMouseScrolling();
     int distanceToTop = myCamera.pixelHeight - (int)Input.mousePosition.y;
     int distanceToButtom = (int)Input.mousePosition.y;
     int distanceToRight = myCamera.pixelWidth - (int)Input.mousePosition.x;
     int distanseToLeft = (int)Input.mousePosition.x;
     if(distanceToTop<BorderSize&&distanceToTop>0)
     {
         myCamera.transform.position += Vector3.up*Time.deltaTime*(BorderSize-distanceToTop)*ScrollSpeed;
     }
     else if(distanceToButtom<BorderSize&&distanceToButtom>0)
     {
         myCamera.transform.position += Vector3.down*Time.deltaTime * (BorderSize - distanceToButtom) * ScrollSpeed;
     }
     if(distanseToLeft<BorderSize&&distanseToLeft>0)
     {
         myCamera.transform.position += Vector3.left*Time.deltaTime * (BorderSize - distanseToLeft) * ScrollSpeed;
     }
     else if(distanceToRight<BorderSize&&distanceToRight>0)
     {
         myCamera.transform.position += Vector3.right*Time.deltaTime * (BorderSize - distanceToRight) * ScrollSpeed;
     }
     
     if(Input.mouseScrollDelta.y!=0)
     {
         myCamera.orthographicSize -= Input.mouseScrollDelta.y * Time.deltaTime*ZoomSpeed;
         myCamera.orthographicSize = Mathf.Clamp(myCamera.orthographicSize, 1700, 10500);
     }
     transform.position = new Vector3(Mathf.Clamp(transform.position.x, leftLimit, rightLimit), 
         Mathf.Clamp(transform.position.y, topLimit, buttomLimit), transform.position.z);
 }
 
 private void HandleMiddleMouseScrolling()
 {
     if(Input.GetMouseButtonDown(2))
     {
         mouseScrollStartPos = myCamera.ScreenToWorldPoint(Input.mousePosition);
     }
     
     if(Input.GetMouseButton(2))
     {
         Vector3 movement = Vector3.zero;
         movement = myCamera.ScreenToWorldPoint(Input.mousePosition) - mouseScrollStartPos;
         myCamera.transform.position -= movement;
     }
     
 }
   ``

Ответы (0 шт):