Как правильно поменять вектор движения при свайпе?

Всем привет , не могу понять как правильно написать код. Мне нужно что бы допустим , объект движется по оси У в "верх" , а при свайпе вправо он меняет свою траекторию движения и начинает по прежнему двигаться но в сторону самого свайпа то-есть по оси Х . С таким методом перемещения ещё не сталкивался , поэтому и не понимаю как его правильно реализовать( Заранее больше спасибо за ответ!

введите сюда описание изображения

Это код самого свайпа:

`public class Swipe : MonoBehaviour
{
    public static event OnSwipeInput SwipeEvent;
    public delegate void OnSwipeInput(Vector2 derection);

    private Vector2 tapPosition;
    private Vector2 swipeDelta;

    private float deadZone = 10;

    private bool isSwiping;
    private bool isMobile;

    private void Start() 
    {
        isMobile = Application.isMobilePlatform;    
    }

    private void Update() 
    {
        if (!isMobile)
        {
            if (Input.GetMouseButtonDown(0))
            {
                isSwiping = true;
                tapPosition = Input.mousePosition;
            }
            else if (Input.GetMouseButtonUp(0))
                ResetSwipe();
        }  
        else
        {
            if (Input.touchCount > 0)
            {
                if (Input.GetTouch(0).phase == TouchPhase.Began)
                {
                    isSwiping = true;
                    tapPosition = Input.GetTouch(0).position;
                }
                else if (Input.GetTouch(0).phase == TouchPhase.Canceled ||
                    Input.GetTouch(0).phase == TouchPhase.Ended)
                    {
                        ResetSwipe();
                    }
            }
        }  

        CheckSwipe();
    }

    private void CheckSwipe()
    {
        swipeDelta = Vector2.zero;

        if (isSwiping)
        {
            if (!isMobile && Input.GetMouseButton(0))
            {
                swipeDelta = (Vector2)Input.mousePosition - tapPosition; 
            }
            else if (Input.touchCount > 0)
            {
                swipeDelta = Input.GetTouch(0).position - tapPosition;
            }
        }
        if (swipeDelta.magnitude > deadZone)
        {
            if (SwipeEvent != null)
            {
                if(Math.Abs(swipeDelta.x) > Math.Abs(swipeDelta.y))
                    SwipeEvent?.Invoke(swipeDelta.x > 0 ? Vector2.right : Vector2.left);
                else 
                    SwipeEvent?.Invoke(swipeDelta.y > 0 ? Vector2.up : Vector2.down);
            }   

            ResetSwipe();
        }
    }

    private void ResetSwipe()
    {
        isSwiping = false;

        tapPosition = Vector2.zero;
        swipeDelta = Vector2.zero;
    }

}

Это код управления кубом , хочу сделать код в методе Move() :

{
    public Vector2 direction;
    public float speed;
    private Rigidbody2D rb;

    private void Start()
    {
     rb = GetComponent<Rigidbody2D>();
       
       

       Swipe.SwipeEvent += Move;
    }

    void FixedUpdate()
    {
       transform.Translate(direction.normalized * speed);
    }

    private void Move(Vector2 direction)
    {
       
    }

}

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