swipe distance detection dont work

i wanna detect the swipe distance in a 3d world. this is my code so far:

using UnityEngine;
using System.Collections;

public class MouseMove2D : MonoBehaviour {

	public Vector3 mousePosition;
	private Camera Cam;
	public LayerMask layers;

	public bool isSwipe = false;
	public float gestureTime;
	public float gestureDist;
	private TrailRenderer trail;

	public Vector3 startPosition;
	public Vector3 currentPosition;

	void Start () {
		Cam = Camera.main;
		trail = GetComponent<TrailRenderer>();

	void Update () {

			RaycastHit hit;
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
		if ( Physics.Raycast (ray,out hit,100.0f, layers)) {

				mousePosition = hit.point;
				transform.position = hit.point;


		if (Input.GetMouseButtonDown(0)) {

			gestureDist = 0;
			isSwipe = true;
			trail.enabled = true;
			startPosition = transform.position;


		if (Input.GetMouseButtonUp(0)) {

			isSwipe = false;
			trail.enabled = false;
			//startPosition = Vector3.zero;
			gestureTime = 0;
			gestureDist = 0;


		if (isSwipe){

			currentPosition = transform.position;

			gestureTime += Time.deltaTime;
			gestureDist = (currentPosition - startPosition).sqrMagnitude;
			//gestureDist = Vector3.Distance (currentPosition, startPosition);


so when i am swiping i right at the beginning i think everything is fine, but when i just don’t move the mouse/finger and just simply point down, the distance counter goes up and down from 1 to 7 with no clear pattern - anyone a idea what i did wrong?

I think, the answer depends on which GameObject your script is attached to, becouse you are using the coordinates of this gameObject:

 startPosition = transform.position;
 currentPosition = transform.position;

Its in a gameobject that gets moved by the current mouse position. So on mouse down i save the start position and on drag the current position. And in between i ask for the distance wich got a bug when i dont drag