Добавление элементов управления салфеткой в ​​движке Unity [duplicate]

Я бы использовал этот код:

Uri myUI = Uri.parse ("http://example.com/query").buildUpon().appendQueryParameter("q","random word A3500 bank 24").build();
0
задан Programmer 5 January 2017 в 23:48
поделиться

2 ответа

Я могу заметить некоторые проблемы в вашем коде. Не рекомендуется сравнивать Vector3 с == или !=. Приблизительное сравнение в порядке. Вы используете Input.GetMouseButtonDown на мобильной платформе.

Для этого вам нужно использовать Input.touches . Переверните его, сохраните начальную позицию в TouchPhase.Began , а затем конечную позицию в TouchPhase.Ended . Затем вы можете использовать обе переменные, чтобы определить, в каком направлении движется палец.

Код ниже определяет направление движения, даже когда палец еще не выпущен с помощью TouchPhase.Moved , Вы можете отключить это, включив логическую переменную detectSwipeOnlyAfterRelease. Вы также можете изменить SWIPE_THRESHOLD для чувствительности.

public class SwipeDetector : MonoBehaviour
{
    private Vector2 fingerDown;
    private Vector2 fingerUp;
    public bool detectSwipeOnlyAfterRelease = false;

    public float SWIPE_THRESHOLD = 20f;

    // Update is called once per frame
    void Update()
    {

        foreach (Touch touch in Input.touches)
        {
            if (touch.phase == TouchPhase.Began)
            {
                fingerUp = touch.position;
                fingerDown = touch.position;
            }

            //Detects Swipe while finger is still moving
            if (touch.phase == TouchPhase.Moved)
            {
                if (!detectSwipeOnlyAfterRelease)
                {
                    fingerDown = touch.position;
                    checkSwipe();
                }
            }

            //Detects swipe after finger is released
            if (touch.phase == TouchPhase.Ended)
            {
                fingerDown = touch.position;
                checkSwipe();
            }
        }
    }

    void checkSwipe()
    {
        //Check if Vertical swipe
        if (verticalMove() > SWIPE_THRESHOLD && verticalMove() > horizontalValMove())
        {
            //Debug.Log("Vertical");
            if (fingerDown.y - fingerUp.y > 0)//up swipe
            {
                OnSwipeUp();
            }
            else if (fingerDown.y - fingerUp.y < 0)//Down swipe
            {
                OnSwipeDown();
            }
            fingerUp = fingerDown;
        }

        //Check if Horizontal swipe
        else if (horizontalValMove() > SWIPE_THRESHOLD && horizontalValMove() > verticalMove())
        {
            //Debug.Log("Horizontal");
            if (fingerDown.x - fingerUp.x > 0)//Right swipe
            {
                OnSwipeRight();
            }
            else if (fingerDown.x - fingerUp.x < 0)//Left swipe
            {
                OnSwipeLeft();
            }
            fingerUp = fingerDown;
        }

        //No Movement at-all
        else
        {
            //Debug.Log("No Swipe!");
        }
    }

    float verticalMove()
    {
        return Mathf.Abs(fingerDown.y - fingerUp.y);
    }

    float horizontalValMove()
    {
        return Mathf.Abs(fingerDown.x - fingerUp.x);
    }

    //////////////////////////////////CALLBACK FUNCTIONS/////////////////////////////
    void OnSwipeUp()
    {
        Debug.Log("Swipe UP");
    }

    void OnSwipeDown()
    {
        Debug.Log("Swipe Down");
    }

    void OnSwipeLeft()
    {
        Debug.Log("Swipe Left");
    }

    void OnSwipeRight()
    {
        Debug.Log("Swipe Right");
    }
}
6
ответ дан Programmer 17 August 2018 в 21:09
поделиться
  • 1
    Я знал, что на мобильном телефоне мне придется изменить его на Input.touch, я просто пытался имитировать его на своем компьютере, потому что единство не читает Input.touches на компьютере. Только после сборки на мобильном устройстве. Спасибо, хотя и помогли. – Cory Sparks 6 January 2017 в 16:15
  • 2
    Второе - последнее предложение на самом деле не так. Вы можете протестировать свой телефон, подключенный к компьютеру в редакторе, без его создания. См. этот и сохраните свое время. Добро пожаловать! – Programmer 6 January 2017 в 16:17
Try this Out.  
I hope this helps.




void Update(){
if (Input.GetMouseButtonDown(0)){
    startPosition = Input.mousePosition;
}
if (Input.GetMouseButtonUp(0)){
    float swipe = startPosition.x - Input.mousePosition.x;
}


        if (swipe < 0)
        {
            print("LTR");
        } else{
            print("RTL");
        }
    }

}
}
-1
ответ дан Nishchhal Bakshi 17 August 2018 в 21:09
поделиться
Другие вопросы по тегам:

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