DuckMcQuack
@DuckMcQuack

Как вы реализуете свайпы в unity?

Я пробовал разными способами, и универсальным для пк и андроид через MousePosition, iDragHandler, touch.deltaPosition и отдельно считая разницу между позициями. Наиболее корректным показался вариант с touch.deltaPosition
void Update () {
		
		Touch touch = Input.GetTouch(0);
		if(touch.deltaPosition.x>0f){
			Debug.Log ("right");
		}
		if(touch.deltaPosition.x<0f){
			Debug.Log ("left");
		}
			
	}

но он за один свайп делает кучу
  • Вопрос задан
  • 13772 просмотра
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
если вы все так делали то ничего удивительного..
общий принцип жеста "сваип"

- запомнить стартовую позицию (клика/касания тут неважно) )плюс возможно таймер и индекс пальца/тача если нужен мультитач
- считать смещение пока не отпустили
- в момент когда отпустили - посчитать смещение. (возможно проверить время, чтоб за сваип не считало если "вел в бок пять секунд")
- посчитанное смещение. в зависимости от на правления засчитать за нужный "сваип"

а не каждый кадр как у вас считать))
У тача есть фазы. старт. движение. отмена. конец...увидите в документации.
как собственно у мышки есть -НАЖАТА. ЗАЖАТА. ОТПУЩЕНА ))
https://docs.unity3d.com/ScriptReference/Touch-pha...
https://docs.unity3d.com/ScriptReference/Input.Get...
и тд
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mopsicus
@mopsicus
Рекомендую бесплатный ассет Lean Touch: https://assetstore.unity.com/packages/tools/input-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы