void OnMouseUp()
{
float deltaX = Input.mousePosition.x - curPointX;
float deltaY = Input.mousePosition.y - curPointY;
// Защита от обычного клика без свайпа (мертвая зона)
if (Mathf.Abs(deltaX) < 2f && Mathf.Abs(deltaY) < 2f)
return;
// Определяем, был ли свайп в основном горизонтальным или вертикальным
bool isHorizontalSwipe = Mathf.Abs(deltaX) > Mathf.Abs(deltaY);
// Если машина горизонтальная и свайп был горизонтальным
if (CarAxis == Axis.Horizontal && isHorizontalSwipe)
{
CarDirectionX = deltaX > 0 ? Direction.Right : Direction.Left;
isClicked = true;
}
// Если машина вертикальная и свайп был вертикальным
else if (CarAxis == Axis.Vertical && !isHorizontalSwipe)
{
CarDirectionY = deltaY > 0 ? Direction.Top : Direction.Bottom;
isClicked = true;
}
// В противном случае свайп игнорируется (например, если горизонтальную машину потянули вверх)
}
void FixedUpdate()
{
if (isClicked && FinalPosition.x == 0)
{
Vector3 whichWay = CarAxis == Axis.Horizontal ? Vector3.forward : Vector3.left;
// Создаем локальную переменную скорости на этот кадр,
// чтобы не перезаписывать публичную переменную speed навсегда
float currentSpeed = Mathf.Abs(speed);
if (CarAxis == Axis.Horizontal && CarDirectionX == Direction.Left)
{
currentSpeed *= -1;
}
else if (CarAxis == Axis.Vertical && CarDirectionY == Direction.Bottom)
{
currentSpeed *= -1;
}
rb.MovePosition(rb.position + whichWay * currentSpeed * Time.fixedDeltaTime);
}
}