Zefirot
@Zefirot

Почему прыгают координаты при зуме?

Вот написал код движения камеры и зума, для пк и моб
spoiler
private void MoveCamera(){
        #if UNITY_EDITOR
        if(Input.GetAxis("Mouse ScrollWheel") != 0){
            float PrevMapScale = MapScale;
            if(Input.GetAxis("Mouse ScrollWheel") > 0){ MapScale = MapScale - 0.5f; }else MapScale = MapScale + 0.5f;
            if(MapScale < MapScaleMax) MapScale = MapScaleMax;
            if(MapScale > MapScaleMin) MapScale = MapScaleMin;
            if(PrevMapScale != MapScale){ MainCamera.orthographicSize = MapScale; }
            }
        if(Input.GetMouseButtonDown(0)){ CurrentPositionCamera = MainCamera.ScreenToWorldPoint(Input.mousePosition); }
        if(Input.GetMouseButton(0)){
            Vector3 DifferencePositionCamera = CurrentPositionCamera - MainCamera.ScreenToWorldPoint(Input.mousePosition);
            if(DifferencePositionCamera != PrevPositionCamera){
                MainCamera.transform.position += DifferencePositionCamera;
                PrevPositionCamera = DifferencePositionCamera;
                }
            }
        #else
        if(Input.touchCount == 1){
            Touch touch = Input.GetTouch(0);
            if(touch.phase == TouchPhase.Began){ CurrentPositionCamera = MainCamera.ScreenToWorldPoint(Input.mousePosition); }
            else if(touch.phase == TouchPhase.Moved){
                Vector3 DifferencePositionCamera = CurrentPositionCamera - MainCamera.ScreenToWorldPoint(Input.mousePosition);
                if(DifferencePositionCamera != PrevPositionCamera){
                    MainCamera.transform.position += DifferencePositionCamera;
                    PrevPositionCamera = DifferencePositionCamera;
                    }
                }
            }
        else if(Input.touchCount == 2){
            float PrevMapScale = MapScale;
            Touch touchZero = Input.GetTouch(0);
            Touch touchOne = Input.GetTouch(1);
            Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
            Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;
            float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
            float touchDeltaMag = (touchZero.position - touchOne.position).magnitude;
            float deltaMagnitudeDiff = (prevTouchDeltaMag - touchDeltaMag) / 100;
            MapScale += deltaMagnitudeDiff;
            if(MapScale < MapScaleMax) MapScale = MapScaleMax;
            if(MapScale > MapScaleMin) MapScale = MapScaleMin;
            if(PrevMapScale != MapScale){ MainCamera.orthographicSize = MapScale; }
            }
        #endif
        }

на ПК (в редакторе) все работает идеально, на телефоне если просто двигать камеру то норм, но вот когда начинаю зум менять то начинают координаты камеры прыгать, кручу уже который час и не могу понять в чем дело то?
Подскажите...
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы