Управление персонажем на Android Unity C#

Есть некий скрипт который должен управлять персонажем, а именно свайп вправо/влево должен поворачивать персонажа, а свайп вверх/вниз должны поворачивать камеру 1/3 вида на 13 крадусов от стартового положения. Что мне не нравится в текущем скрипте (есть блок с миникартой и джостиком) и свайпы поворота не должны конфликтовать с одновременным нажатием на джостик, + повороты вверх/ вниз работают как-то криво. Главным вопросом является фикс одновременной работы с джостиком и поворотом

Блок миникарты и джостика это пустой элемент, а сами элементы это изображения

void Update()
    {
        int k = 0;
            while(Input.touchCount > k)
            {
                Vector2 deltaposition = Vector2.zero;
                if(Input.GetTouch(k).position.x > Screen.width / 2 - 100)
                {
                    if(k == 0)
                        deltaposition = Input.GetTouch(k).deltaPosition;
                    deltaposition.x /= Screen.dpi;
                    if(deltaposition.x != 0)
                    {
                        float speedX = 22 * deltaposition.x;
                        user1.transform.Rotate(Vector3.up * speedX);
                    }
                }

                if(Input.GetTouch(k).position.y > Screen.height / 2 - 100)
                {
                    if(k == 0)
                        deltaposition = Input.GetTouch(k).deltaPosition;
                    deltaposition.y /= Screen.dpi;
                    if(deltaposition.y != 0)
                    {
                        float speedY = 22 * deltaposition.y;
                        if(cam3.transform.localRotation.eulerAngles.x < 13)
                        {
                            cam3.transform.Rotate(Vector3.right * (speedY));
                            cam1.transform.Rotate(Vector3.right * (speedY));

                        }
                        if(cam3.transform.localRotation.eulerAngles.x > 347 || cam3.transform.localRotation.eulerAngles.x >= 13)
                        {
                            cam3.transform.Rotate(Vector3.right * -(speedY));
                            cam1.transform.Rotate(Vector3.right * -(speedY));

                        }
                        GUI.Label(new Rect(330, 120, 100, 20), cam3.transform.localRotation.eulerAngles.x.ToString());

                    }
                }
                k++;

            }
        }

    }

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