Как разделить тачи и свайпы

Друзья, а как можно разделить тачи и свайпы? Идея такая, что при таче надо прыгать, а при свайпе двигаться влево и вправо. А сейчас получается так, что при свайпе(так как TouchCount > 0) и прыгает, и двигается. И не пойму какую проверку поставить. Пробовал velocity == vector3.zero, но не срабатывает.

Код вот такой:

if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began )
        { 
            startTouchPosition = Input.GetTouch(0).position;
        }

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            endTouchPosition = Input.GetTouch(0).position;

            if (endTouchPosition.x < startTouchPosition.x)
            {
                rb.AddForce(Vector3.forward * speed, ForceMode.Impulse);
            }
            if (endTouchPosition.x > startTouchPosition.x)
            {
                rb.AddForce(Vector3.back * speed, ForceMode.Impulse);
            }
        }

     if (Input.touchCount > 0 && isGrounded && rb.velocity == Vector3.zero)
        {
            Vector3 targetPosition = new Vector3(1, 2, 0);
            targetPosition.Normalize();

            rb.velocity = Vector3.zero;
            rb.AddForce(targetPosition * jumpHeight * Time.deltaTime, ForceMode.Impulse);

            Debug.Log(isGrounded);

        }

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

Автор решения: Yaroslav

Простой вариант:

// дистанция определяющая что свайп, а что тап
private const float _swipeRange = 10f;
private Vector2 _touchBegan;

private void Update () {
    UpdateInput();
}

private void UpdateInput () {
    if (Input.touchCount > 0) {
        Touch Touch0 = Input.GetTouch(0);
        if (Touch0.phase == TouchPhase.Began)
            _touchStart = Touch.position;
        if (Touch0.phase == TouchPhase.Ended) {
            Vector2 TouchVector = Touch0.position-_touchBegan; 
            if (TouchVector.magnitude < _swipeRange)
                Tap();
            else {
                if (Mathf.Abs(TouchVector.x) > Mathf.Abs(TouchVector.y)) {
                    if (TouchVector.x > 0)
                        Swipe(Vector2.right);
                    else
                        Swipe(Vector2.left);
                } else {
                    if (TouchVector.y > 0)
                        Swipe(Vector2.up);
                    else
                        Swipe(Vector2.down);
                } 
            }
        }
    }
}
→ Ссылка