Как правильно поменять вектор движения при свайпе?
Всем привет , не могу понять как правильно написать код. Мне нужно что бы допустим , объект движется по оси У в "верх" , а при свайпе вправо он меняет свою траекторию движения и начинает по прежнему двигаться но в сторону самого свайпа то-есть по оси Х . С таким методом перемещения ещё не сталкивался , поэтому и не понимаю как его правильно реализовать( Заранее больше спасибо за ответ!
Это код самого свайпа:
`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)
{
}
}
