How to increase number of movement in one swipe input ?

Hi guys… i am making a game in unity for android platform i have made a cube which rolls with a swipe input. When i swipe on the screen the cube roll one time but i want that when i swipe on screen the cube rolls as many times as possible in that particular time (time taken in one swipe) . Can anyone help me with that. Here is my script which sits on the cube :-

public float rotationPeriod = 0.3f;

 public float sideLength = 1f;

 bool isRotate = false; 

float directionX = 0; 

float directionZ = 0; 

Vector3 startPos; 

float rotationTime = 0; 

float radius; 

Quaternion fromRotation; 

Quaternion toRotation; 

float x, y; 

public float minSwipeDistY = 1;

 public float minSwipeDistX = 1;

 private Vector3 touchStartPos; 


// Use this for initialization

 void Start() 
{ radius = sideLength * Mathf.Sqrt (2f) /2f;} 

 // Update is called once per frame

 void Update()
 {
 #if UNITY_EDITOR || UNITY_STANDALONE

 DetectMouseSwipe(); 

#else DetectSwipe(); 

#endif if ((x != 0 || y != 0) && !isRotate)

 { directionX = y;
 directionZ = x; 
startPos = transform.position; fromRotation = transform.rotation; transform.Rotate(directionZ * 90, 0, directionX * 90, Space.World);

 toRotation = transform.rotation;

 transform.rotation = fromRotation;

 rotationTime = 0; isRotate = true; }

 } 

void FixedUpdate()
 { if (isRotate) { rotationTime += Time.fixedDeltaTime;

 float ratio = Mathf.Lerp(0, 1, rotationTime / rotationPeriod); 

float thetaRad = Mathf.Lerp(0, Mathf.PI / 2f, ratio);

 float distanceX = -directionX * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));

 float distanceY = radius * (Mathf.Sin(45f * Mathf.Deg2Rad + thetaRad) - Mathf.Sin(45f * Mathf.Deg2Rad)); 

float distanceZ = directionZ * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad)); 

transform.position = new Vector3(startPos.x + distanceX, startPos.y + distanceY, startPos.z + distanceZ);

 transform.rotation = Quaternion.Lerp(fromRotation, toRotation, ratio); 

if (ratio == 1) 
{ isRotate = false; 
directionX = 0;
 directionZ = 0; 
rotationTime = 0; } 
       } 

}
 void DetectSwipe()
 { x = y = 0; 
if (Input.touchCount > 0) { Touch touch = Input.touches[0]; 

Vector3 touchPos = touch.position; 

if (touch.phase == TouchPhase.Began) { touchStartPos = touchPos; } 

else if (touch.phase == TouchPhase.Ended) { float angle = CalculateAngle(touchStartPos - touchPos, Vector2.right);

 int dir = Mathf.CeilToInt((angle - 45) / 90f); 

if (dir == 4) dir = 0; 
if (dir == 0) x = 1; 
else if (dir == 2) x = -1; 
if (dir == 3) y = -1; 
else if (dir == 1) y = 1; } 
}

} 
float CalculateAngle(Vector3 from, Vector3 to) { Vector3 euler = Quaternion.FromToRotation(Vector3.right, to - from).eulerAngles; 

return euler.z != 0 ? euler.z : euler.y; }

 void DetectMouseSwipe()
 { x = y = 0; 

if (Input.GetMouseButtonDown(0)) { touchStartPos = Input.mousePosition; } 

else if (Input.GetMouseButtonUp(0)) { float angle = CalculateAngle(touchStartPos - Input.mousePosition, Vector2.right);

 int dir = Mathf.CeilToInt((angle - 45) / 90f); 
if (dir == 4) dir = 0;
 if (dir == 0) x = 1; 
else if (dir == 2) x = -1; 
if (dir == 3) y = -1; 
else if (dir == 1) y = 1; } 

}

@LeeroyLin

I think the issue lies with

if (touch.phase == TouchPhase.Ended)

Not quite sure because the code is in a very hard to read format, but it looks like if you change this conditional to

if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Moved)

you’ll get it to work during movement, and not just at the end.