2016-10-04 12 views
0

Я пытаюсь выяснить, как обнаружить, когда прикосновение перемещается вперед и назад в Unity.Как проверить, перемещается ли нажатие в Unity взад-вперед в пределах диапазона?

, как показано на рисунке, я ищу способ обнаружения, когда касание перемещается из его исходного положения (1) во второй x (2), а затем обратно к где-то рядом с исходным положением (3) все с определенную скорость и в течение временных рамок, по существу что-то вроде трясущегося жеста. Im действительно зациклился на том, как это сделать. Любая помощь будет оценена.

an illustration of what I mean

до сих пор я просто знаю, как получить начальную позицию прикосновением.

Vector2 startingPos; 
float shakeTime = 2f; 

void Update() 
{ 
    foreach(Input.touch touch in Input.touches) 
    { 
     if(touch.phase == TouchPhase.Began) 
     { 
      startingPos = touch.position; 
     } 
    } 
} 
+0

Возможно, я прочитал это неправильно, но встряхиваю устройство! = Перемещение пальцем по экрану. Что именно ты пытаешься сделать? – Programmer

+0

@ Программист Я не хотел встряхивать устройство, я имею в виду делать какой-то трясущий жест пальцем, а не устройство – programmerdude619

ответ

0
float touchTimer=0f; 
float shakeTime = 2f; 
float moveAwayLimit = 1f; 
float moveBackLimit = .5f; 
bool awayReached = false; 
Vector2 startingPos; 

void Update() 
{ 
    foreach (Touch touch in Input.touches) 
    { 
     if (touch.phase == TouchPhase.Began) 
     { 
      startingPos = touch.position; 
      touchTimer = 0; 
      awayReached = false; 
     } 
     if (Vector2.Distance(touch.position, startingPos) > moveAwayLimit && touchTimer < shakeTime && !awayReached) 
     { 
      awayReached = true; 
     } 
     else if (Vector2.Distance(touch.position, startingPos) < moveBackLimit && touchTimer < shakeTime && awayReached) 
     { 
      Shake(); 
     } 
     touchTimer += Time.deltaTime; 
    } 
} 

Что-то, как это должно работать, он проверяет, если отойти дальше, чем moveAwayLimit с самого начала, и после этого, если вы в moveBackLimit от startingPos.

+0

Большое спасибо! это именно то, что я искал. – programmerdude619

 Смежные вопросы

  • Нет связанных вопросов^_^