public float minSwipeDistance = 50f;
public float maxSwipeTime = 1f;
private Vector2 fingerDownPosition;
private Vector2 fingerUpPosition;
private float fingerDownTime;
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
fingerDownPosition = touch.position;
fingerUpPosition = touch.position;
fingerDownTime = Time.time;
}
if (touch.phase == TouchPhase.Ended)
{
fingerUpPosition = touch.position;
CheckSwipe();
}
}
if (Input.GetMouseButtonDown(0))
{
fingerDownPosition = Input.mousePosition;
fingerUpPosition = Input.mousePosition;
fingerDownTime = Time.time;
}
if (Input.GetMouseButtonUp(0))
{
fingerUpPosition = Input.mousePosition;
CheckSwipe();
}
}
void CheckSwipe()
{
float deltaTime = Time.time - fingerDownTime;
if (deltaTime > maxSwipeTime) return;
float distance = Vector2.Distance(fingerDownPosition, fingerUpPosition);
if (distance < minSwipeDistance) return;
Vector2 direction = fingerUpPosition - fingerDownPosition;
direction.Normalize();
if (Mathf.Abs(direction.x) > Mathf.Abs(direction.y))
{
if (direction.x > 0)
{
OnSwipeRight();
}
else
{
OnSwipeLeft();
}
}
else
{
if (direction.y > 0)
{
OnSwipeUp();
}
else
{
OnSwipeDown();
}
}
}
void OnSwipeRight()
{
Debug.Log("Свайп ВПРАВО = D");
}
void OnSwipeLeft()
{
Debug.Log("Свайп ВЛЕВО = A");
}
void OnSwipeUp()
{
Debug.Log("Свайп ВВЕРХ = W (Прыжок)");
}
void OnSwipeDown()
{
Debug.Log("Свайп ВНИЗ = S (Присесть/Скольжение)");
}