Unity: мобильное движение камеры дрожит - PullRequest
0 голосов
/ 31 марта 2020

У меня есть скрипт, настроенный таким образом, чтобы при касании / перетаскивании правой стороны экрана мобильного устройства камера двигалась. Это работает отлично, за исключением того, что камера дрожит (весь код находится в LateUpdate ()). Есть ли лучший способ сделать это, что будет более гладким? Для полноты изображения это камера от третьего лица.

 for (int i = 0; i < Input.touchCount; i++)
        {
            if (Input.GetTouch(i).phase == TouchPhase.Began)
            {
                Vector3 p = Input.GetTouch(i).position;
                Debug.Log(p);

                if (p.x < Screen.width / 3 * 1)
                {
                    //touched on the left
                    //do other code
                    Debug.Log("Touch Left");
                }
                else
                {
                    //touched on the right
                    //do other code
                    Debug.Log("Right Touch");
                    firstpoint = Input.GetTouch(i).position;
                    xAngTemp = xAngle;
                    yAngTemp = yAngle;
                }
            }

            if (Input.GetTouch(i).phase == TouchPhase.Moved)
            {
                Vector3 p = Input.GetTouch(i).position;
                Debug.Log(p);

                if (p.x < Screen.width / 3 * 1)
                {
                    //touched on the left
                    //do other code
                    Debug.Log("Move Left");
                }
                else
                {
                    //touched on the right
                    //do other code
                    Debug.Log("Move Right");
                    secondpoint = Input.GetTouch(i).position;
                    //Mainly, about rotate camera. For example, for Screen.width rotate on 180 degree
                    xAngle = xAngTemp + (secondpoint.x - firstpoint.x) * 180.0f / Screen.width;
                    yAngle = yAngTemp - (secondpoint.y - firstpoint.y) * 90.0f / Screen.height;
                    yAngle = Mathf.Clamp(yAngle, -50, 50);
                    //Rotate camera
                    transform.LookAt(Target);
                    Target.rotation = Quaternion.Euler(yAngle, xAngle, 0);
                    Player.rotation = Quaternion.Euler(0, xAngle, 0);
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...